<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Rollup Visualizer</title>
  <style>
    :root {
      --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif,
        "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      --background-color: #2b2d42;
      --text-color: #edf2f4;
    }

    html {
      box-sizing: border-box;
    }

    *,
    *:before,
    *:after {
      box-sizing: inherit;
    }

    html {
      background-color: var(--background-color);
      color: var(--text-color);
      font-family: var(--font-family);
    }

    body {
      padding: 0;
      margin: 0;
    }

    html,
    body {
      height: 100%;
      width: 100%;
      overflow: hidden;
    }

    body {
      display: flex;
      flex-direction: column;
    }

    svg {
      vertical-align: middle;
      width: 100%;
      height: 100%;
      max-height: 100vh;
    }

    main {
      flex-grow: 1;
      height: 100vh;
      padding: 20px;
    }

    .tooltip {
      position: absolute;
      z-index: 1070;
      border: 2px solid;
      border-radius: 5px;
      padding: 5px;
      white-space: nowrap;
      font-size: 0.875rem;
      background-color: var(--background-color);
      color: var(--text-color);
    }

    .tooltip-hidden {
      visibility: hidden;
      opacity: 0;
    }

    .sidebar {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      display: flex;
      flex-direction: row;
      font-size: 0.7rem;
      align-items: center;
      margin: 0 50px;
      height: 20px;
    }

    .size-selectors {
      display: flex;
      flex-direction: row;
      align-items: center;
    }

    .size-selector {
      display: flex;
      flex-direction: row;
      align-items: center;
      justify-content: center;
      margin-right: 1rem;
    }

    .size-selector input {
      margin: 0 0.3rem 0 0;
    }

    .filters {
      flex: 1;
      display: flex;
      flex-direction: row;
      align-items: center;
    }

    .module-filters {
      display: flex;
      flex-grow: 1;
    }

    .module-filter {
      display: flex;
      flex-direction: row;
      align-items: center;
      justify-content: center;
      flex: 1;
    }

    .module-filter input {
      flex: 1;
      height: 1rem;
      padding: 0.01rem;
      font-size: 0.7rem;
      margin-left: 0.3rem;
    }

    .module-filter+.module-filter {
      margin-left: 0.5rem;
    }
  </style>
</head>

<body>
  <main></main>
  <script>
    /*<!--*/
    var drawChart = (function (exports) {
      'use strict';

      var n, l$1, u$1, t$1, o$2, r$1, f$1 = {}, e$1 = [], c$1 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; function s$1(n, l) { for (var u in l) n[u] = l[u]; return n } function a$1(n) { var l = n.parentNode; l && l.removeChild(n); } function h$1(l, u, i) { var t, o, r, f = {}; for (r in u) "key" == r ? t = u[r] : "ref" == r ? o = u[r] : f[r] = u[r]; if (arguments.length > 2 && (f.children = arguments.length > 3 ? n.call(arguments, 2) : i), "function" == typeof l && null != l.defaultProps) for (r in l.defaultProps) void 0 === f[r] && (f[r] = l.defaultProps[r]); return v$1(l, f, t, o, null) } function v$1(n, i, t, o, r) { var f = { type: n, props: i, key: t, ref: o, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: null == r ? ++u$1 : r }; return null == r && null != l$1.vnode && l$1.vnode(f), f } function p$1(n) { return n.children } function d$1(n, l) { this.props = n, this.context = l; } function _$2(n, l) { if (null == l) return n.__ ? _$2(n.__, n.__.__k.indexOf(n) + 1) : null; for (var u; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) return u.__e; return "function" == typeof n.type ? _$2(n) : null } function k$1(n) { var l, u; if (null != (n = n.__) && null != n.__c) { for (n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) { n.__e = n.__c.base = u.__e; break } return k$1(n) } } function b$1(n) { (!n.__d && (n.__d = !0) && t$1.push(n) && !g$1.__r++ || o$2 !== l$1.debounceRendering) && ((o$2 = l$1.debounceRendering) || setTimeout)(g$1); } function g$1() { for (var n; g$1.__r = t$1.length;)n = t$1.sort(function (n, l) { return n.__v.__b - l.__v.__b }), t$1 = [], n.some(function (n) { var l, u, i, t, o, r; n.__d && (o = (t = (l = n).__v).__e, (r = l.__P) && (u = [], (i = s$1({}, t)).__v = t.__v + 1, j$1(r, t, i, l.__n, void 0 !== r.ownerSVGElement, null != t.__h ? [o] : null, u, null == o ? _$2(t) : o, t.__h), z$1(u, t), t.__e != o && k$1(t))); }); } function w$1(n, l, u, i, t, o, r, c, s, a) { var h, y, d, k, b, g, w, x = i && i.__k || e$1, C = x.length; for (u.__k = [], h = 0; h < l.length; h++)if (null != (k = u.__k[h] = null == (k = l[h]) || "boolean" == typeof k ? null : "string" == typeof k || "number" == typeof k || "bigint" == typeof k ? v$1(null, k, null, null, k) : Array.isArray(k) ? v$1(p$1, { children: k }, null, null, null) : k.__b > 0 ? v$1(k.type, k.props, k.key, k.ref ? k.ref : null, k.__v) : k)) { if (k.__ = u, k.__b = u.__b + 1, null === (d = x[h]) || d && k.key == d.key && k.type === d.type) x[h] = void 0; else for (y = 0; y < C; y++) { if ((d = x[y]) && k.key == d.key && k.type === d.type) { x[y] = void 0; break } d = null; } j$1(n, k, d = d || f$1, t, o, r, c, s, a), b = k.__e, (y = k.ref) && d.ref != y && (w || (w = []), d.ref && w.push(d.ref, null, k), w.push(y, k.__c || b, k)), null != b ? (null == g && (g = b), "function" == typeof k.type && k.__k === d.__k ? k.__d = s = m$1(k, s, n) : s = A$1(n, k, d, x, b, s), "function" == typeof u.type && (u.__d = s)) : s && d.__e == s && s.parentNode != n && (s = _$2(d)); } for (u.__e = g, h = C; h--;)null != x[h] && N(x[h], x[h]); if (w) for (h = 0; h < w.length; h++)M(w[h], w[++h], w[++h]); } function m$1(n, l, u) { for (var i, t = n.__k, o = 0; t && o < t.length; o++)(i = t[o]) && (i.__ = n, l = "function" == typeof i.type ? m$1(i, l, u) : A$1(u, i, i, t, i.__e, l)); return l } function A$1(n, l, u, i, t, o) { var r, f, e; if (void 0 !== l.__d) r = l.__d, l.__d = void 0; else if (null == u || t != o || null == t.parentNode) n: if (null == o || o.parentNode !== n) n.appendChild(t), r = null; else { for (f = o, e = 0; (f = f.nextSibling) && e < i.length; e += 1)if (f == t) break n; n.insertBefore(t, o), r = o; } return void 0 !== r ? r : t.nextSibling } function C$1(n, l, u, i, t) { var o; for (o in u) "children" === o || "key" === o || o in l || H(n, o, null, u[o], i); for (o in l) t && "function" != typeof l[o] || "children" === o || "key" === o || "value" === o || "checked" === o || u[o] === l[o] || H(n, o, l[o], u[o], i); } function $(n, l, u) { "-" === l[0] ? n.setProperty(l, u) : n[l] = null == u ? "" : "number" != typeof u || c$1.test(l) ? u : u + "px"; } function H(n, l, u, i, t) { var o; n: if ("style" === l) if ("string" == typeof u) n.style.cssText = u; else { if ("string" == typeof i && (n.style.cssText = i = ""), i) for (l in i) u && l in u || $(n.style, l, ""); if (u) for (l in u) i && u[l] === i[l] || $(n.style, l, u[l]); } else if ("o" === l[0] && "n" === l[1]) o = l !== (l = l.replace(/Capture$/, "")), l = l.toLowerCase() in n ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + o] = u, u ? i || n.addEventListener(l, o ? T$1 : I, o) : n.removeEventListener(l, o ? T$1 : I, o); else if ("dangerouslySetInnerHTML" !== l) { if (t) l = l.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s"); else if ("href" !== l && "list" !== l && "form" !== l && "tabIndex" !== l && "download" !== l && l in n) try { n[l] = null == u ? "" : u; break n } catch (n) { } "function" == typeof u || (null == u || !1 === u && -1 == l.indexOf("-") ? n.removeAttribute(l) : n.setAttribute(l, u)); } } function I(n) { this.l[n.type + !1](l$1.event ? l$1.event(n) : n); } function T$1(n) { this.l[n.type + !0](l$1.event ? l$1.event(n) : n); } function j$1(n, u, i, t, o, r, f, e, c) { var a, h, v, y, _, k, b, g, m, x, A, C, $, H, I, T = u.type; if (void 0 !== u.constructor) return null; null != i.__h && (c = i.__h, e = u.__e = i.__e, u.__h = null, r = [e]), (a = l$1.__b) && a(u); try { n: if ("function" == typeof T) { if (g = u.props, m = (a = T.contextType) && t[a.__c], x = a ? m ? m.props.value : a.__ : t, i.__c ? b = (h = u.__c = i.__c).__ = h.__E : ("prototype" in T && T.prototype.render ? u.__c = h = new T(g, x) : (u.__c = h = new d$1(g, x), h.constructor = T, h.render = O), m && m.sub(h), h.props = g, h.state || (h.state = {}), h.context = x, h.__n = t, v = h.__d = !0, h.__h = [], h._sb = []), null == h.__s && (h.__s = h.state), null != T.getDerivedStateFromProps && (h.__s == h.state && (h.__s = s$1({}, h.__s)), s$1(h.__s, T.getDerivedStateFromProps(g, h.__s))), y = h.props, _ = h.state, v) null == T.getDerivedStateFromProps && null != h.componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount); else { if (null == T.getDerivedStateFromProps && g !== y && null != h.componentWillReceiveProps && h.componentWillReceiveProps(g, x), !h.__e && null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(g, h.__s, x) || u.__v === i.__v) { for (h.props = g, h.state = h.__s, u.__v !== i.__v && (h.__d = !1), h.__v = u, u.__e = i.__e, u.__k = i.__k, u.__k.forEach(function (n) { n && (n.__ = u); }), A = 0; A < h._sb.length; A++)h.__h.push(h._sb[A]); h._sb = [], h.__h.length && f.push(h); break n } null != h.componentWillUpdate && h.componentWillUpdate(g, h.__s, x), null != h.componentDidUpdate && h.__h.push(function () { h.componentDidUpdate(y, _, k); }); } if (h.context = x, h.props = g, h.__v = u, h.__P = n, C = l$1.__r, $ = 0, "prototype" in T && T.prototype.render) { for (h.state = h.__s, h.__d = !1, C && C(u), a = h.render(h.props, h.state, h.context), H = 0; H < h._sb.length; H++)h.__h.push(h._sb[H]); h._sb = []; } else do { h.__d = !1, C && C(u), a = h.render(h.props, h.state, h.context), h.state = h.__s; } while (h.__d && ++$ < 25); h.state = h.__s, null != h.getChildContext && (t = s$1(s$1({}, t), h.getChildContext())), v || null == h.getSnapshotBeforeUpdate || (k = h.getSnapshotBeforeUpdate(y, _)), I = null != a && a.type === p$1 && null == a.key ? a.props.children : a, w$1(n, Array.isArray(I) ? I : [I], u, i, t, o, r, f, e, c), h.base = u.__e, u.__h = null, h.__h.length && f.push(h), b && (h.__E = h.__ = null), h.__e = !1; } else null == r && u.__v === i.__v ? (u.__k = i.__k, u.__e = i.__e) : u.__e = L(i.__e, u, i, t, o, r, f, c); (a = l$1.diffed) && a(u); } catch (n) { u.__v = null, (c || null != r) && (u.__e = e, u.__h = !!c, r[r.indexOf(e)] = null), l$1.__e(n, u, i); } } function z$1(n, u) { l$1.__c && l$1.__c(u, n), n.some(function (u) { try { n = u.__h, u.__h = [], n.some(function (n) { n.call(u); }); } catch (n) { l$1.__e(n, u.__v); } }); } function L(l, u, i, t, o, r, e, c) { var s, h, v, y = i.props, p = u.props, d = u.type, k = 0; if ("svg" === d && (o = !0), null != r) for (; k < r.length; k++)if ((s = r[k]) && "setAttribute" in s == !!d && (d ? s.localName === d : 3 === s.nodeType)) { l = s, r[k] = null; break } if (null == l) { if (null === d) return document.createTextNode(p); l = o ? document.createElementNS("http://www.w3.org/2000/svg", d) : document.createElement(d, p.is && p), r = null, c = !1; } if (null === d) y === p || c && l.data === p || (l.data = p); else { if (r = r && n.call(l.childNodes), h = (y = i.props || f$1).dangerouslySetInnerHTML, v = p.dangerouslySetInnerHTML, !c) { if (null != r) for (y = {}, k = 0; k < l.attributes.length; k++)y[l.attributes[k].name] = l.attributes[k].value; (v || h) && (v && (h && v.__html == h.__html || v.__html === l.innerHTML) || (l.innerHTML = v && v.__html || "")); } if (C$1(l, p, y, o, c), v) u.__k = []; else if (k = u.props.children, w$1(l, Array.isArray(k) ? k : [k], u, i, t, o && "foreignObject" !== d, r, e, r ? r[0] : i.__k && _$2(i, 0), c), null != r) for (k = r.length; k--;)null != r[k] && a$1(r[k]); c || ("value" in p && void 0 !== (k = p.value) && (k !== l.value || "progress" === d && !k || "option" === d && k !== y.value) && H(l, "value", k, y.value, !1), "checked" in p && void 0 !== (k = p.checked) && k !== l.checked && H(l, "checked", k, y.checked, !1)); } return l } function M(n, u, i) { try { "function" == typeof n ? n(u) : n.current = u; } catch (n) { l$1.__e(n, i); } } function N(n, u, i) { var t, o; if (l$1.unmount && l$1.unmount(n), (t = n.ref) && (t.current && t.current !== n.__e || M(t, null, u)), null != (t = n.__c)) { if (t.componentWillUnmount) try { t.componentWillUnmount(); } catch (n) { l$1.__e(n, u); } t.base = t.__P = null, n.__c = void 0; } if (t = n.__k) for (o = 0; o < t.length; o++)t[o] && N(t[o], u, i || "function" != typeof n.type); i || null == n.__e || a$1(n.__e), n.__ = n.__e = n.__d = void 0; } function O(n, l, u) { return this.constructor(n, u) } function P(u, i, t) { var o, r, e; l$1.__ && l$1.__(u, i), r = (o = "function" == typeof t) ? null : t && t.__k || i.__k, e = [], j$1(i, u = (!o && t || i).__k = h$1(p$1, null, [u]), r || f$1, f$1, void 0 !== i.ownerSVGElement, !o && t ? [t] : r ? null : i.firstChild ? n.call(i.childNodes) : null, e, !o && t ? t : r ? r.__e : i.firstChild, o), z$1(e, u); } function B$2(n, l) { var u = { __c: l = "__cC" + r$1++, __: n, Consumer: function (n, l) { return n.children(l) }, Provider: function (n) { var u, i; return this.getChildContext || (u = [], (i = {})[l] = this, this.getChildContext = function () { return i }, this.shouldComponentUpdate = function (n) { this.props.value !== n.value && u.some(b$1); }, this.sub = function (n) { u.push(n); var l = n.componentWillUnmount; n.componentWillUnmount = function () { u.splice(u.indexOf(n), 1), l && l.call(n); }; }), n.children } }; return u.Provider.__ = u.Consumer.contextType = u } n = e$1.slice, l$1 = { __e: function (n, l, u, i) { for (var t, o, r; l = l.__;)if ((t = l.__c) && !t.__) try { if ((o = t.constructor) && null != o.getDerivedStateFromError && (t.setState(o.getDerivedStateFromError(n)), r = t.__d), null != t.componentDidCatch && (t.componentDidCatch(n, i || {}), r = t.__d), r) return t.__E = t } catch (l) { n = l; } throw n } }, u$1 = 0, d$1.prototype.setState = function (n, l) { var u; u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = s$1({}, this.state), "function" == typeof n && (n = n(s$1({}, u), this.props)), n && s$1(u, n), null != n && this.__v && (l && this._sb.push(l), b$1(this)); }, d$1.prototype.forceUpdate = function (n) { this.__v && (this.__e = !0, n && this.__h.push(n), b$1(this)); }, d$1.prototype.render = p$1, t$1 = [], g$1.__r = 0, r$1 = 0;

      var _$1 = 0; function o$1(o, e, n, t, f) { var l, s, u = {}; for (s in e) "ref" == s ? l = e[s] : u[s] = e[s]; var a = { type: o, props: u, key: n, ref: l, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: --_$1, __source: f, __self: t }; if ("function" == typeof o && (l = o.defaultProps)) for (s in l) void 0 === u[s] && (u[s] = l[s]); return l$1.vnode && l$1.vnode(a), a }

      function count$1(node) {
        var sum = 0,
          children = node.children,
          i = children && children.length;
        if (!i) sum = 1;
        else while (--i >= 0) sum += children[i].value;
        node.value = sum;
      }

      function node_count() {
        return this.eachAfter(count$1);
      }

      function node_each(callback, that) {
        let index = -1;
        for (const node of this) {
          callback.call(that, node, ++index, this);
        }
        return this;
      }

      function node_eachBefore(callback, that) {
        var node = this, nodes = [node], children, i, index = -1;
        while (node = nodes.pop()) {
          callback.call(that, node, ++index, this);
          if (children = node.children) {
            for (i = children.length - 1; i >= 0; --i) {
              nodes.push(children[i]);
            }
          }
        }
        return this;
      }

      function node_eachAfter(callback, that) {
        var node = this, nodes = [node], next = [], children, i, n, index = -1;
        while (node = nodes.pop()) {
          next.push(node);
          if (children = node.children) {
            for (i = 0, n = children.length; i < n; ++i) {
              nodes.push(children[i]);
            }
          }
        }
        while (node = next.pop()) {
          callback.call(that, node, ++index, this);
        }
        return this;
      }

      function node_find(callback, that) {
        let index = -1;
        for (const node of this) {
          if (callback.call(that, node, ++index, this)) {
            return node;
          }
        }
      }

      function node_sum(value) {
        return this.eachAfter(function (node) {
          var sum = +value(node.data) || 0,
            children = node.children,
            i = children && children.length;
          while (--i >= 0) sum += children[i].value;
          node.value = sum;
        });
      }

      function node_sort(compare) {
        return this.eachBefore(function (node) {
          if (node.children) {
            node.children.sort(compare);
          }
        });
      }

      function node_path(end) {
        var start = this,
          ancestor = leastCommonAncestor(start, end),
          nodes = [start];
        while (start !== ancestor) {
          start = start.parent;
          nodes.push(start);
        }
        var k = nodes.length;
        while (end !== ancestor) {
          nodes.splice(k, 0, end);
          end = end.parent;
        }
        return nodes;
      }

      function leastCommonAncestor(a, b) {
        if (a === b) return a;
        var aNodes = a.ancestors(),
          bNodes = b.ancestors(),
          c = null;
        a = aNodes.pop();
        b = bNodes.pop();
        while (a === b) {
          c = a;
          a = aNodes.pop();
          b = bNodes.pop();
        }
        return c;
      }

      function node_ancestors() {
        var node = this, nodes = [node];
        while (node = node.parent) {
          nodes.push(node);
        }
        return nodes;
      }

      function node_descendants() {
        return Array.from(this);
      }

      function node_leaves() {
        var leaves = [];
        this.eachBefore(function (node) {
          if (!node.children) {
            leaves.push(node);
          }
        });
        return leaves;
      }

      function node_links() {
        var root = this, links = [];
        root.each(function (node) {
          if (node !== root) { // Don’t include the root’s parent, if any.
            links.push({ source: node.parent, target: node });
          }
        });
        return links;
      }

      function* node_iterator() {
        var node = this, current, next = [node], children, i, n;
        do {
          current = next.reverse(), next = [];
          while (node = current.pop()) {
            yield node;
            if (children = node.children) {
              for (i = 0, n = children.length; i < n; ++i) {
                next.push(children[i]);
              }
            }
          }
        } while (next.length);
      }

      function hierarchy(data, children) {
        if (data instanceof Map) {
          data = [undefined, data];
          if (children === undefined) children = mapChildren;
        } else if (children === undefined) {
          children = objectChildren;
        }

        var root = new Node$1(data),
          node,
          nodes = [root],
          child,
          childs,
          i,
          n;

        while (node = nodes.pop()) {
          if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {
            node.children = childs;
            for (i = n - 1; i >= 0; --i) {
              nodes.push(child = childs[i] = new Node$1(childs[i]));
              child.parent = node;
              child.depth = node.depth + 1;
            }
          }
        }

        return root.eachBefore(computeHeight);
      }

      function node_copy() {
        return hierarchy(this).eachBefore(copyData);
      }

      function objectChildren(d) {
        return d.children;
      }

      function mapChildren(d) {
        return Array.isArray(d) ? d[1] : null;
      }

      function copyData(node) {
        if (node.data.value !== undefined) node.value = node.data.value;
        node.data = node.data.data;
      }

      function computeHeight(node) {
        var height = 0;
        do node.height = height;
        while ((node = node.parent) && (node.height < ++height));
      }

      function Node$1(data) {
        this.data = data;
        this.depth =
          this.height = 0;
        this.parent = null;
      }

      Node$1.prototype = hierarchy.prototype = {
        constructor: Node$1,
        count: node_count,
        each: node_each,
        eachAfter: node_eachAfter,
        eachBefore: node_eachBefore,
        find: node_find,
        sum: node_sum,
        sort: node_sort,
        path: node_path,
        ancestors: node_ancestors,
        descendants: node_descendants,
        leaves: node_leaves,
        links: node_links,
        copy: node_copy,
        [Symbol.iterator]: node_iterator
      };

      function required(f) {
        if (typeof f !== "function") throw new Error;
        return f;
      }

      function constantZero() {
        return 0;
      }

      function constant$1(x) {
        return function () {
          return x;
        };
      }

      function roundNode(node) {
        node.x0 = Math.round(node.x0);
        node.y0 = Math.round(node.y0);
        node.x1 = Math.round(node.x1);
        node.y1 = Math.round(node.y1);
      }

      function treemapDice(parent, x0, y0, x1, y1) {
        var nodes = parent.children,
          node,
          i = -1,
          n = nodes.length,
          k = parent.value && (x1 - x0) / parent.value;

        while (++i < n) {
          node = nodes[i], node.y0 = y0, node.y1 = y1;
          node.x0 = x0, node.x1 = x0 += node.value * k;
        }
      }

      Object.create(Node$1.prototype);

      function treemapSlice(parent, x0, y0, x1, y1) {
        var nodes = parent.children,
          node,
          i = -1,
          n = nodes.length,
          k = parent.value && (y1 - y0) / parent.value;

        while (++i < n) {
          node = nodes[i], node.x0 = x0, node.x1 = x1;
          node.y0 = y0, node.y1 = y0 += node.value * k;
        }
      }

      var phi = (1 + Math.sqrt(5)) / 2;

      function squarifyRatio(ratio, parent, x0, y0, x1, y1) {
        var rows = [],
          nodes = parent.children,
          row,
          nodeValue,
          i0 = 0,
          i1 = 0,
          n = nodes.length,
          dx, dy,
          value = parent.value,
          sumValue,
          minValue,
          maxValue,
          newRatio,
          minRatio,
          alpha,
          beta;

        while (i0 < n) {
          dx = x1 - x0, dy = y1 - y0;

          // Find the next non-empty node.
          do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);
          minValue = maxValue = sumValue;
          alpha = Math.max(dy / dx, dx / dy) / (value * ratio);
          beta = sumValue * sumValue * alpha;
          minRatio = Math.max(maxValue / beta, beta / minValue);

          // Keep adding nodes while the aspect ratio maintains or improves.
          for (; i1 < n; ++i1) {
            sumValue += nodeValue = nodes[i1].value;
            if (nodeValue < minValue) minValue = nodeValue;
            if (nodeValue > maxValue) maxValue = nodeValue;
            beta = sumValue * sumValue * alpha;
            newRatio = Math.max(maxValue / beta, beta / minValue);
            if (newRatio > minRatio) { sumValue -= nodeValue; break; }
            minRatio = newRatio;
          }

          // Position and record the row orientation.
          rows.push(row = { value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1) });
          if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);
          else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);
          value -= sumValue, i0 = i1;
        }

        return rows;
      }

      var squarify = (function custom(ratio) {

        function squarify(parent, x0, y0, x1, y1) {
          squarifyRatio(ratio, parent, x0, y0, x1, y1);
        }

        squarify.ratio = function (x) {
          return custom((x = +x) > 1 ? x : 1);
        };

        return squarify;
      })(phi);

      function treemap() {
        var tile = squarify,
          round = false,
          dx = 1,
          dy = 1,
          paddingStack = [0],
          paddingInner = constantZero,
          paddingTop = constantZero,
          paddingRight = constantZero,
          paddingBottom = constantZero,
          paddingLeft = constantZero;

        function treemap(root) {
          root.x0 =
            root.y0 = 0;
          root.x1 = dx;
          root.y1 = dy;
          root.eachBefore(positionNode);
          paddingStack = [0];
          if (round) root.eachBefore(roundNode);
          return root;
        }

        function positionNode(node) {
          var p = paddingStack[node.depth],
            x0 = node.x0 + p,
            y0 = node.y0 + p,
            x1 = node.x1 - p,
            y1 = node.y1 - p;
          if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
          if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
          node.x0 = x0;
          node.y0 = y0;
          node.x1 = x1;
          node.y1 = y1;
          if (node.children) {
            p = paddingStack[node.depth + 1] = paddingInner(node) / 2;
            x0 += paddingLeft(node) - p;
            y0 += paddingTop(node) - p;
            x1 -= paddingRight(node) - p;
            y1 -= paddingBottom(node) - p;
            if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
            if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
            tile(node, x0, y0, x1, y1);
          }
        }

        treemap.round = function (x) {
          return arguments.length ? (round = !!x, treemap) : round;
        };

        treemap.size = function (x) {
          return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];
        };

        treemap.tile = function (x) {
          return arguments.length ? (tile = required(x), treemap) : tile;
        };

        treemap.padding = function (x) {
          return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();
        };

        treemap.paddingInner = function (x) {
          return arguments.length ? (paddingInner = typeof x === "function" ? x : constant$1(+x), treemap) : paddingInner;
        };

        treemap.paddingOuter = function (x) {
          return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();
        };

        treemap.paddingTop = function (x) {
          return arguments.length ? (paddingTop = typeof x === "function" ? x : constant$1(+x), treemap) : paddingTop;
        };

        treemap.paddingRight = function (x) {
          return arguments.length ? (paddingRight = typeof x === "function" ? x : constant$1(+x), treemap) : paddingRight;
        };

        treemap.paddingBottom = function (x) {
          return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant$1(+x), treemap) : paddingBottom;
        };

        treemap.paddingLeft = function (x) {
          return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant$1(+x), treemap) : paddingLeft;
        };

        return treemap;
      }

      var treemapResquarify = (function custom(ratio) {

        function resquarify(parent, x0, y0, x1, y1) {
          if ((rows = parent._squarify) && (rows.ratio === ratio)) {
            var rows,
              row,
              nodes,
              i,
              j = -1,
              n,
              m = rows.length,
              value = parent.value;

            while (++j < m) {
              row = rows[j], nodes = row.children;
              for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;
              if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);
              else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);
              value -= row.value;
            }
          } else {
            parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);
            rows.ratio = ratio;
          }
        }

        resquarify.ratio = function (x) {
          return custom((x = +x) > 1 ? x : 1);
        };

        return resquarify;
      })(phi);

      const isModuleTree = (mod) => "children" in mod;

      let count = 0;
      class Id {
        constructor(id) {
          this._id = id;
          const url = new URL(window.location.href);
          url.hash = id;
          this._href = url.toString();
        }
        get id() {
          return this._id;
        }
        get href() {
          return this._href;
        }
        toString() {
          return `url(${this.href})`;
        }
      }
      function generateUniqueId(name) {
        count += 1;
        const id = ["O", name, count].filter(Boolean).join("-");
        return new Id(id);
      }

      const LABELS = {
        renderedLength: "Rendered",
        gzipLength: "Gzip",
        brotliLength: "Brotli",
      };
      const getAvailableSizeOptions = (options) => {
        const availableSizeProperties = ["renderedLength"];
        if (options.gzip) {
          availableSizeProperties.push("gzipLength");
        }
        if (options.brotli) {
          availableSizeProperties.push("brotliLength");
        }
        return availableSizeProperties;
      };

      var t, r, u, i, o = 0, f = [], c = [], e = l$1.__b, a = l$1.__r, v = l$1.diffed, l = l$1.__c, m = l$1.unmount; function d(t, u) { l$1.__h && l$1.__h(r, t, o || u), o = 0; var i = r.__H || (r.__H = { __: [], __h: [] }); return t >= i.__.length && i.__.push({ __V: c }), i.__[t] } function p(n) { return o = 1, y(B$1, n) } function y(n, u, i) { var o = d(t++, 2); if (o.t = n, !o.__c && (o.__ = [i ? i(u) : B$1(void 0, u), function (n) { var t = o.__N ? o.__N[0] : o.__[0], r = o.t(t, n); t !== r && (o.__N = [r, o.__[1]], o.__c.setState({})); }], o.__c = r, !r.u)) { r.u = !0; var f = r.shouldComponentUpdate; r.shouldComponentUpdate = function (n, t, r) { if (!o.__c.__H) return !0; var u = o.__c.__H.__.filter(function (n) { return n.__c }); if (u.every(function (n) { return !n.__N })) return !f || f.call(this, n, t, r); var i = !1; return u.forEach(function (n) { if (n.__N) { var t = n.__[0]; n.__ = n.__N, n.__N = void 0, t !== n.__[0] && (i = !0); } }), !(!i && o.__c.props === n) && (!f || f.call(this, n, t, r)) }; } return o.__N || o.__ } function h(u, i) { var o = d(t++, 3); !l$1.__s && z(o.__H, i) && (o.__ = u, o.i = i, r.__H.__h.push(o)); } function s(u, i) { var o = d(t++, 4); !l$1.__s && z(o.__H, i) && (o.__ = u, o.i = i, r.__h.push(o)); } function _(n) { return o = 5, F(function () { return { current: n } }, []) } function F(n, r) { var u = d(t++, 7); return z(u.__H, r) ? (u.__V = n(), u.i = r, u.__h = n, u.__V) : u.__ } function T(n, t) { return o = 8, F(function () { return n }, t) } function q(n) { var u = r.context[n.__c], i = d(t++, 9); return i.c = n, u ? (null == i.__ && (i.__ = !0, u.sub(r)), u.props.value) : n.__ } function b() { for (var t; t = f.shift();)if (t.__P && t.__H) try { t.__H.__h.forEach(k), t.__H.__h.forEach(w), t.__H.__h = []; } catch (r) { t.__H.__h = [], l$1.__e(r, t.__v); } } l$1.__b = function (n) { r = null, e && e(n); }, l$1.__r = function (n) { a && a(n), t = 0; var i = (r = n.__c).__H; i && (u === r ? (i.__h = [], r.__h = [], i.__.forEach(function (n) { n.__N && (n.__ = n.__N), n.__V = c, n.__N = n.i = void 0; })) : (i.__h.forEach(k), i.__h.forEach(w), i.__h = [])), u = r; }, l$1.diffed = function (t) { v && v(t); var o = t.__c; o && o.__H && (o.__H.__h.length && (1 !== f.push(o) && i === l$1.requestAnimationFrame || ((i = l$1.requestAnimationFrame) || j)(b)), o.__H.__.forEach(function (n) { n.i && (n.__H = n.i), n.__V !== c && (n.__ = n.__V), n.i = void 0, n.__V = c; })), u = r = null; }, l$1.__c = function (t, r) { r.some(function (t) { try { t.__h.forEach(k), t.__h = t.__h.filter(function (n) { return !n.__ || w(n) }); } catch (u) { r.some(function (n) { n.__h && (n.__h = []); }), r = [], l$1.__e(u, t.__v); } }), l && l(t, r); }, l$1.unmount = function (t) { m && m(t); var r, u = t.__c; u && u.__H && (u.__H.__.forEach(function (n) { try { k(n); } catch (n) { r = n; } }), u.__H = void 0, r && l$1.__e(r, u.__v)); }; var g = "function" == typeof requestAnimationFrame; function j(n) { var t, r = function () { clearTimeout(u), g && cancelAnimationFrame(t), setTimeout(n); }, u = setTimeout(r, 100); g && (t = requestAnimationFrame(r)); } function k(n) { var t = r, u = n.__c; "function" == typeof u && (n.__c = void 0, u()), r = t; } function w(n) { var t = r; n.__c = n.__(), r = t; } function z(n, t) { return !n || n.length !== t.length || t.some(function (t, r) { return t !== n[r] }) } function B$1(n, t) { return "function" == typeof t ? t(n) : t }

      const PLACEHOLDER = "bundle-*:**/file/**,**/file**, bundle-*:";
      const SideBar = ({ availableSizeProperties, sizeProperty, setSizeProperty, onExcludeChange, onIncludeChange, }) => {
        const [includeValue, setIncludeValue] = p("");
        const [excludeValue, setExcludeValue] = p("");
        const handleSizePropertyChange = (sizeProp) => () => {
          if (sizeProp !== sizeProperty) {
            setSizeProperty(sizeProp);
          }
        };
        const handleIncludeChange = (event) => {
          const value = event.currentTarget.value;
          setIncludeValue(value);
          onIncludeChange(value);
        };
        const handleExcludeChange = (event) => {
          const value = event.currentTarget.value;
          setExcludeValue(value);
          onExcludeChange(value);
        };
        return (o$1("aside", Object.assign({ className: "sidebar" }, {
          children: [o$1("div", Object.assign({ className: "size-selectors" }, {
            children: availableSizeProperties.length > 1 &&
              availableSizeProperties.map((sizeProp) => {
                const id = `selector-${sizeProp}`;
                return (o$1("div", Object.assign({ className: "size-selector" }, { children: [o$1("input", { type: "radio", id: id, checked: sizeProp === sizeProperty, onChange: handleSizePropertyChange(sizeProp) }), o$1("label", Object.assign({ htmlFor: id }, { children: LABELS[sizeProp] }))] }), sizeProp));
              })
          })), o$1("div", Object.assign({ className: "module-filters" }, { children: [o$1("div", Object.assign({ className: "module-filter" }, { children: [o$1("label", Object.assign({ htmlFor: "module-filter-exclude" }, { children: "Exclude" })), o$1("input", { type: "text", id: "module-filter-exclude", value: excludeValue, onInput: handleExcludeChange, placeholder: PLACEHOLDER })] })), o$1("div", Object.assign({ className: "module-filter" }, { children: [o$1("label", Object.assign({ htmlFor: "module-filter-include" }, { children: "Include" })), o$1("input", { type: "text", id: "module-filter-include", value: includeValue, onInput: handleIncludeChange, placeholder: PLACEHOLDER })] }))] }))]
        })));
      };

      function getDefaultExportFromCjs(x) {
        return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
      }

      var picomatchBrowserExports = {};
      var picomatchBrowser = {
        get exports() { return picomatchBrowserExports; },
        set exports(v) { picomatchBrowserExports = v; },
      };

      var utils$3 = {};

      const WIN_SLASH = '\\\\/';
      const WIN_NO_SLASH = `[^${WIN_SLASH}]`;

      /**
       * Posix glob regex
       */

      const DOT_LITERAL = '\\.';
      const PLUS_LITERAL = '\\+';
      const QMARK_LITERAL = '\\?';
      const SLASH_LITERAL = '\\/';
      const ONE_CHAR = '(?=.)';
      const QMARK = '[^/]';
      const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;
      const START_ANCHOR = `(?:^|${SLASH_LITERAL})`;
      const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;
      const NO_DOT = `(?!${DOT_LITERAL})`;
      const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;
      const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;
      const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;
      const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;
      const STAR = `${QMARK}*?`;
      const SEP = '/';

      const POSIX_CHARS = {
        DOT_LITERAL,
        PLUS_LITERAL,
        QMARK_LITERAL,
        SLASH_LITERAL,
        ONE_CHAR,
        QMARK,
        END_ANCHOR,
        DOTS_SLASH,
        NO_DOT,
        NO_DOTS,
        NO_DOT_SLASH,
        NO_DOTS_SLASH,
        QMARK_NO_DOT,
        STAR,
        START_ANCHOR,
        SEP
      };

      /**
       * Windows glob regex
       */

      const WINDOWS_CHARS = {
        ...POSIX_CHARS,

        SLASH_LITERAL: `[${WIN_SLASH}]`,
        QMARK: WIN_NO_SLASH,
        STAR: `${WIN_NO_SLASH}*?`,
        DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,
        NO_DOT: `(?!${DOT_LITERAL})`,
        NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
        NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,
        NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
        QMARK_NO_DOT: `[^.${WIN_SLASH}]`,
        START_ANCHOR: `(?:^|[${WIN_SLASH}])`,
        END_ANCHOR: `(?:[${WIN_SLASH}]|$)`,
        SEP: '\\'
      };

      /**
       * POSIX Bracket Regex
       */

      const POSIX_REGEX_SOURCE$1 = {
        alnum: 'a-zA-Z0-9',
        alpha: 'a-zA-Z',
        ascii: '\\x00-\\x7F',
        blank: ' \\t',
        cntrl: '\\x00-\\x1F\\x7F',
        digit: '0-9',
        graph: '\\x21-\\x7E',
        lower: 'a-z',
        print: '\\x20-\\x7E ',
        punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~',
        space: ' \\t\\r\\n\\v\\f',
        upper: 'A-Z',
        word: 'A-Za-z0-9_',
        xdigit: 'A-Fa-f0-9'
      };

      var constants$3 = {
        MAX_LENGTH: 1024 * 64,
        POSIX_REGEX_SOURCE: POSIX_REGEX_SOURCE$1,

        // regular expressions
        REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
        REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/,
        REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/,
        REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g,
        REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g,
        REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g,

        // Replace globs with equivalent patterns to reduce parsing time.
        REPLACEMENTS: {
          '***': '*',
          '**/**': '**',
          '**/**/**': '**'
        },

        // Digits
        CHAR_0: 48, /* 0 */
        CHAR_9: 57, /* 9 */

        // Alphabet chars.
        CHAR_UPPERCASE_A: 65, /* A */
        CHAR_LOWERCASE_A: 97, /* a */
        CHAR_UPPERCASE_Z: 90, /* Z */
        CHAR_LOWERCASE_Z: 122, /* z */

        CHAR_LEFT_PARENTHESES: 40, /* ( */
        CHAR_RIGHT_PARENTHESES: 41, /* ) */

        CHAR_ASTERISK: 42, /* * */

        // Non-alphabetic chars.
        CHAR_AMPERSAND: 38, /* & */
        CHAR_AT: 64, /* @ */
        CHAR_BACKWARD_SLASH: 92, /* \ */
        CHAR_CARRIAGE_RETURN: 13, /* \r */
        CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */
        CHAR_COLON: 58, /* : */
        CHAR_COMMA: 44, /* , */
        CHAR_DOT: 46, /* . */
        CHAR_DOUBLE_QUOTE: 34, /* " */
        CHAR_EQUAL: 61, /* = */
        CHAR_EXCLAMATION_MARK: 33, /* ! */
        CHAR_FORM_FEED: 12, /* \f */
        CHAR_FORWARD_SLASH: 47, /* / */
        CHAR_GRAVE_ACCENT: 96, /* ` */
        CHAR_HASH: 35, /* # */
        CHAR_HYPHEN_MINUS: 45, /* - */
        CHAR_LEFT_ANGLE_BRACKET: 60, /* < */
        CHAR_LEFT_CURLY_BRACE: 123, /* { */
        CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */
        CHAR_LINE_FEED: 10, /* \n */
        CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */
        CHAR_PERCENT: 37, /* % */
        CHAR_PLUS: 43, /* + */
        CHAR_QUESTION_MARK: 63, /* ? */
        CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */
        CHAR_RIGHT_CURLY_BRACE: 125, /* } */
        CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */
        CHAR_SEMICOLON: 59, /* ; */
        CHAR_SINGLE_QUOTE: 39, /* ' */
        CHAR_SPACE: 32, /*   */
        CHAR_TAB: 9, /* \t */
        CHAR_UNDERSCORE: 95, /* _ */
        CHAR_VERTICAL_LINE: 124, /* | */
        CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */

        /**
         * Create EXTGLOB_CHARS
         */

        extglobChars(chars) {
          return {
            '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },
            '?': { type: 'qmark', open: '(?:', close: ')?' },
            '+': { type: 'plus', open: '(?:', close: ')+' },
            '*': { type: 'star', open: '(?:', close: ')*' },
            '@': { type: 'at', open: '(?:', close: ')' }
          };
        },

        /**
         * Create GLOB_CHARS
         */

        globChars(win32) {
          return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;
        }
      };

      (function (exports) {

        const {
          REGEX_BACKSLASH,
          REGEX_REMOVE_BACKSLASH,
          REGEX_SPECIAL_CHARS,
          REGEX_SPECIAL_CHARS_GLOBAL
        } = constants$3;

        exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
        exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
        exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);
        exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
        exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');

        exports.removeBackslashes = str => {
          return str.replace(REGEX_REMOVE_BACKSLASH, match => {
            return match === '\\' ? '' : match;
          });
        };

        exports.supportsLookbehinds = () => {
          const segs = process.version.slice(1).split('.').map(Number);
          if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {
            return true;
          }
          return false;
        };

        exports.escapeLast = (input, char, lastIdx) => {
          const idx = input.lastIndexOf(char, lastIdx);
          if (idx === -1) return input;
          if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1);
          return `${input.slice(0, idx)}\\${input.slice(idx)}`;
        };

        exports.removePrefix = (input, state = {}) => {
          let output = input;
          if (output.startsWith('./')) {
            output = output.slice(2);
            state.prefix = './';
          }
          return output;
        };

        exports.wrapOutput = (input, state = {}, options = {}) => {
          const prepend = options.contains ? '' : '^';
          const append = options.contains ? '' : '$';

          let output = `${prepend}(?:${input})${append}`;
          if (state.negated === true) {
            output = `(?:^(?!${output}).*$)`;
          }
          return output;
        };

        exports.basename = (path, { windows } = {}) => {
          if (windows) {
            return path.replace(/[\\/]$/, '').replace(/.*[\\/]/, '');
          } else {
            return path.replace(/\/$/, '').replace(/.*\//, '');
          }
        };
      }(utils$3));

      const utils$2 = utils$3;
      const {
        CHAR_ASTERISK,             /* * */
        CHAR_AT,                   /* @ */
        CHAR_BACKWARD_SLASH,       /* \ */
        CHAR_COMMA,                /* , */
        CHAR_DOT,                  /* . */
        CHAR_EXCLAMATION_MARK,     /* ! */
        CHAR_FORWARD_SLASH,        /* / */
        CHAR_LEFT_CURLY_BRACE,     /* { */
        CHAR_LEFT_PARENTHESES,     /* ( */
        CHAR_LEFT_SQUARE_BRACKET,  /* [ */
        CHAR_PLUS,                 /* + */
        CHAR_QUESTION_MARK,        /* ? */
        CHAR_RIGHT_CURLY_BRACE,    /* } */
        CHAR_RIGHT_PARENTHESES,    /* ) */
        CHAR_RIGHT_SQUARE_BRACKET  /* ] */
      } = constants$3;

      const isPathSeparator = code => {
        return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;
      };

      const depth = token => {
        if (token.isPrefix !== true) {
          token.depth = token.isGlobstar ? Infinity : 1;
        }
      };

      /**
       * Quickly scans a glob pattern and returns an object with a handful of
       * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),
       * `glob` (the actual pattern), and `negated` (true if the path starts with `!`).
       *
       * ```js
       * const pm = require('picomatch');
       * console.log(pm.scan('foo/bar/*.js'));
       * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }
       * ```
       * @param {String} `str`
       * @param {Object} `options`
       * @return {Object} Returns an object with tokens and regex source string.
       * @api public
       */

      const scan$1 = (input, options) => {
        const opts = options || {};

        const length = input.length - 1;
        const scanToEnd = opts.parts === true || opts.scanToEnd === true;
        const slashes = [];
        const tokens = [];
        const parts = [];

        let str = input;
        let index = -1;
        let start = 0;
        let lastIndex = 0;
        let isBrace = false;
        let isBracket = false;
        let isGlob = false;
        let isExtglob = false;
        let isGlobstar = false;
        let braceEscaped = false;
        let backslashes = false;
        let negated = false;
        let finished = false;
        let braces = 0;
        let prev;
        let code;
        let token = { value: '', depth: 0, isGlob: false };

        const eos = () => index >= length;
        const peek = () => str.charCodeAt(index + 1);
        const advance = () => {
          prev = code;
          return str.charCodeAt(++index);
        };

        while (index < length) {
          code = advance();
          let next;

          if (code === CHAR_BACKWARD_SLASH) {
            backslashes = token.backslashes = true;
            code = advance();

            if (code === CHAR_LEFT_CURLY_BRACE) {
              braceEscaped = true;
            }
            continue;
          }

          if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {
            braces++;

            while (eos() !== true && (code = advance())) {
              if (code === CHAR_BACKWARD_SLASH) {
                backslashes = token.backslashes = true;
                advance();
                continue;
              }

              if (code === CHAR_LEFT_CURLY_BRACE) {
                braces++;
                continue;
              }

              if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {
                isBrace = token.isBrace = true;
                isGlob = token.isGlob = true;
                finished = true;

                if (scanToEnd === true) {
                  continue;
                }

                break;
              }

              if (braceEscaped !== true && code === CHAR_COMMA) {
                isBrace = token.isBrace = true;
                isGlob = token.isGlob = true;
                finished = true;

                if (scanToEnd === true) {
                  continue;
                }

                break;
              }

              if (code === CHAR_RIGHT_CURLY_BRACE) {
                braces--;

                if (braces === 0) {
                  braceEscaped = false;
                  isBrace = token.isBrace = true;
                  finished = true;
                  break;
                }
              }
            }

            if (scanToEnd === true) {
              continue;
            }

            break;
          }

          if (code === CHAR_FORWARD_SLASH) {
            slashes.push(index);
            tokens.push(token);
            token = { value: '', depth: 0, isGlob: false };

            if (finished === true) continue;
            if (prev === CHAR_DOT && index === (start + 1)) {
              start += 2;
              continue;
            }

            lastIndex = index + 1;
            continue;
          }

          if (opts.noext !== true) {
            const isExtglobChar = code === CHAR_PLUS
              || code === CHAR_AT
              || code === CHAR_ASTERISK
              || code === CHAR_QUESTION_MARK
              || code === CHAR_EXCLAMATION_MARK;

            if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {
              isGlob = token.isGlob = true;
              isExtglob = token.isExtglob = true;
              finished = true;

              if (scanToEnd === true) {
                while (eos() !== true && (code = advance())) {
                  if (code === CHAR_BACKWARD_SLASH) {
                    backslashes = token.backslashes = true;
                    code = advance();
                    continue;
                  }

                  if (code === CHAR_RIGHT_PARENTHESES) {
                    isGlob = token.isGlob = true;
                    finished = true;
                    break;
                  }
                }
                continue;
              }
              break;
            }
          }

          if (code === CHAR_ASTERISK) {
            if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;
            isGlob = token.isGlob = true;
            finished = true;

            if (scanToEnd === true) {
              continue;
            }
            break;
          }

          if (code === CHAR_QUESTION_MARK) {
            isGlob = token.isGlob = true;
            finished = true;

            if (scanToEnd === true) {
              continue;
            }
            break;
          }

          if (code === CHAR_LEFT_SQUARE_BRACKET) {
            while (eos() !== true && (next = advance())) {
              if (next === CHAR_BACKWARD_SLASH) {
                backslashes = token.backslashes = true;
                advance();
                continue;
              }

              if (next === CHAR_RIGHT_SQUARE_BRACKET) {
                isBracket = token.isBracket = true;
                isGlob = token.isGlob = true;
                finished = true;

                if (scanToEnd === true) {
                  continue;
                }
                break;
              }
            }
          }

          if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {
            negated = token.negated = true;
            start++;
            continue;
          }

          if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {
            isGlob = token.isGlob = true;

            if (scanToEnd === true) {
              while (eos() !== true && (code = advance())) {
                if (code === CHAR_LEFT_PARENTHESES) {
                  backslashes = token.backslashes = true;
                  code = advance();
                  continue;
                }

                if (code === CHAR_RIGHT_PARENTHESES) {
                  finished = true;
                  break;
                }
              }
              continue;
            }
            break;
          }

          if (isGlob === true) {
            finished = true;

            if (scanToEnd === true) {
              continue;
            }

            break;
          }
        }

        if (opts.noext === true) {
          isExtglob = false;
          isGlob = false;
        }

        let base = str;
        let prefix = '';
        let glob = '';

        if (start > 0) {
          prefix = str.slice(0, start);
          str = str.slice(start);
          lastIndex -= start;
        }

        if (base && isGlob === true && lastIndex > 0) {
          base = str.slice(0, lastIndex);
          glob = str.slice(lastIndex);
        } else if (isGlob === true) {
          base = '';
          glob = str;
        } else {
          base = str;
        }

        if (base && base !== '' && base !== '/' && base !== str) {
          if (isPathSeparator(base.charCodeAt(base.length - 1))) {
            base = base.slice(0, -1);
          }
        }

        if (opts.unescape === true) {
          if (glob) glob = utils$2.removeBackslashes(glob);

          if (base && backslashes === true) {
            base = utils$2.removeBackslashes(base);
          }
        }

        const state = {
          prefix,
          input,
          start,
          base,
          glob,
          isBrace,
          isBracket,
          isGlob,
          isExtglob,
          isGlobstar,
          negated
        };

        if (opts.tokens === true) {
          state.maxDepth = 0;
          if (!isPathSeparator(code)) {
            tokens.push(token);
          }
          state.tokens = tokens;
        }

        if (opts.parts === true || opts.tokens === true) {
          let prevIndex;

          for (let idx = 0; idx < slashes.length; idx++) {
            const n = prevIndex ? prevIndex + 1 : start;
            const i = slashes[idx];
            const value = input.slice(n, i);
            if (opts.tokens) {
              if (idx === 0 && start !== 0) {
                tokens[idx].isPrefix = true;
                tokens[idx].value = prefix;
              } else {
                tokens[idx].value = value;
              }
              depth(tokens[idx]);
              state.maxDepth += tokens[idx].depth;
            }
            if (idx !== 0 || value !== '') {
              parts.push(value);
            }
            prevIndex = i;
          }

          if (prevIndex && prevIndex + 1 < input.length) {
            const value = input.slice(prevIndex + 1);
            parts.push(value);

            if (opts.tokens) {
              tokens[tokens.length - 1].value = value;
              depth(tokens[tokens.length - 1]);
              state.maxDepth += tokens[tokens.length - 1].depth;
            }
          }

          state.slashes = slashes;
          state.parts = parts;
        }

        return state;
      };

      var scan_1 = scan$1;

      const constants$2 = constants$3;
      const utils$1 = utils$3;

      /**
       * Constants
       */

      const {
        MAX_LENGTH,
        POSIX_REGEX_SOURCE,
        REGEX_NON_SPECIAL_CHARS,
        REGEX_SPECIAL_CHARS_BACKREF,
        REPLACEMENTS
      } = constants$2;

      /**
       * Helpers
       */

      const expandRange = (args, options) => {
        if (typeof options.expandRange === 'function') {
          return options.expandRange(...args, options);
        }

        args.sort();
        const value = `[${args.join('-')}]`;

        try {
          /* eslint-disable-next-line no-new */
          new RegExp(value);
        } catch (ex) {
          return args.map(v => utils$1.escapeRegex(v)).join('..');
        }

        return value;
      };

      /**
       * Create the message for a syntax error
       */

      const syntaxError = (type, char) => {
        return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`;
      };

      /**
       * Parse the given input string.
       * @param {String} input
       * @param {Object} options
       * @return {Object}
       */

      const parse$2 = (input, options) => {
        if (typeof input !== 'string') {
          throw new TypeError('Expected a string');
        }

        input = REPLACEMENTS[input] || input;

        const opts = { ...options };
        const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;

        let len = input.length;
        if (len > max) {
          throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
        }

        const bos = { type: 'bos', value: '', output: opts.prepend || '' };
        const tokens = [bos];

        const capture = opts.capture ? '' : '?:';

        // create constants based on platform, for windows or posix
        const PLATFORM_CHARS = constants$2.globChars(opts.windows);
        const EXTGLOB_CHARS = constants$2.extglobChars(PLATFORM_CHARS);

        const {
          DOT_LITERAL,
          PLUS_LITERAL,
          SLASH_LITERAL,
          ONE_CHAR,
          DOTS_SLASH,
          NO_DOT,
          NO_DOT_SLASH,
          NO_DOTS_SLASH,
          QMARK,
          QMARK_NO_DOT,
          STAR,
          START_ANCHOR
        } = PLATFORM_CHARS;

        const globstar = (opts) => {
          return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
        };

        const nodot = opts.dot ? '' : NO_DOT;
        const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;
        let star = opts.bash === true ? globstar(opts) : STAR;

        if (opts.capture) {
          star = `(${star})`;
        }

        // minimatch options support
        if (typeof opts.noext === 'boolean') {
          opts.noextglob = opts.noext;
        }

        const state = {
          input,
          index: -1,
          start: 0,
          dot: opts.dot === true,
          consumed: '',
          output: '',
          prefix: '',
          backtrack: false,
          negated: false,
          brackets: 0,
          braces: 0,
          parens: 0,
          quotes: 0,
          globstar: false,
          tokens
        };

        input = utils$1.removePrefix(input, state);
        len = input.length;

        const extglobs = [];
        const braces = [];
        const stack = [];
        let prev = bos;
        let value;

        /**
         * Tokenizing helpers
         */

        const eos = () => state.index === len - 1;
        const peek = state.peek = (n = 1) => input[state.index + n];
        const advance = state.advance = () => input[++state.index];
        const remaining = () => input.slice(state.index + 1);
        const consume = (value = '', num = 0) => {
          state.consumed += value;
          state.index += num;
        };
        const append = token => {
          state.output += token.output != null ? token.output : token.value;
          consume(token.value);
        };

        const negate = () => {
          let count = 1;

          while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {
            advance();
            state.start++;
            count++;
          }

          if (count % 2 === 0) {
            return false;
          }

          state.negated = true;
          state.start++;
          return true;
        };

        const increment = type => {
          state[type]++;
          stack.push(type);
        };

        const decrement = type => {
          state[type]--;
          stack.pop();
        };

        /**
         * Push tokens onto the tokens array. This helper speeds up
         * tokenizing by 1) helping us avoid backtracking as much as possible,
         * and 2) helping us avoid creating extra tokens when consecutive
         * characters are plain text. This improves performance and simplifies
         * lookbehinds.
         */

        const push = tok => {
          if (prev.type === 'globstar') {
            const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');
            const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));

            if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {
              state.output = state.output.slice(0, -prev.output.length);
              prev.type = 'star';
              prev.value = '*';
              prev.output = star;
              state.output += prev.output;
            }
          }

          if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) {
            extglobs[extglobs.length - 1].inner += tok.value;
          }

          if (tok.value || tok.output) append(tok);
          if (prev && prev.type === 'text' && tok.type === 'text') {
            prev.value += tok.value;
            prev.output = (prev.output || '') + tok.value;
            return;
          }

          tok.prev = prev;
          tokens.push(tok);
          prev = tok;
        };

        const extglobOpen = (type, value) => {
          const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };

          token.prev = prev;
          token.parens = state.parens;
          token.output = state.output;
          const output = (opts.capture ? '(' : '') + token.open;

          increment('parens');
          push({ type, value, output: state.output ? '' : ONE_CHAR });
          push({ type: 'paren', extglob: true, value: advance(), output });
          extglobs.push(token);
        };

        const extglobClose = token => {
          let output = token.close + (opts.capture ? ')' : '');

          if (token.type === 'negate') {
            let extglobStar = star;

            if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {
              extglobStar = globstar(opts);
            }

            if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) {
              output = token.close = `)$))${extglobStar}`;
            }

            if (token.prev.type === 'bos' && eos()) {
              state.negatedExtglob = true;
            }
          }

          push({ type: 'paren', extglob: true, value, output });
          decrement('parens');
        };

        /**
         * Fast paths
         */

        if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) {
          let backslashes = false;

          let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {
            if (first === '\\') {
              backslashes = true;
              return m;
            }

            if (first === '?') {
              if (esc) {
                return esc + first + (rest ? QMARK.repeat(rest.length) : '');
              }
              if (index === 0) {
                return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');
              }
              return QMARK.repeat(chars.length);
            }

            if (first === '.') {
              return DOT_LITERAL.repeat(chars.length);
            }

            if (first === '*') {
              if (esc) {
                return esc + first + (rest ? star : '');
              }
              return star;
            }
            return esc ? m : `\\${m}`;
          });

          if (backslashes === true) {
            if (opts.unescape === true) {
              output = output.replace(/\\/g, '');
            } else {
              output = output.replace(/\\+/g, m => {
                return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : '');
              });
            }
          }

          if (output === input && opts.contains === true) {
            state.output = input;
            return state;
          }

          state.output = utils$1.wrapOutput(output, state, options);
          return state;
        }

        /**
         * Tokenize input until we reach end-of-string
         */

        while (!eos()) {
          value = advance();

          if (value === '\u0000') {
            continue;
          }

          /**
           * Escaped characters
           */

          if (value === '\\') {
            const next = peek();

            if (next === '/' && opts.bash !== true) {
              continue;
            }

            if (next === '.' || next === ';') {
              continue;
            }

            if (!next) {
              value += '\\';
              push({ type: 'text', value });
              continue;
            }

            // collapse slashes to reduce potential for exploits
            const match = /^\\+/.exec(remaining());
            let slashes = 0;

            if (match && match[0].length > 2) {
              slashes = match[0].length;
              state.index += slashes;
              if (slashes % 2 !== 0) {
                value += '\\';
              }
            }

            if (opts.unescape === true) {
              value = advance() || '';
            } else {
              value += advance() || '';
            }

            if (state.brackets === 0) {
              push({ type: 'text', value });
              continue;
            }
          }

          /**
           * If we're inside a regex character class, continue
           * until we reach the closing bracket.
           */

          if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {
            if (opts.posix !== false && value === ':') {
              const inner = prev.value.slice(1);
              if (inner.includes('[')) {
                prev.posix = true;

                if (inner.includes(':')) {
                  const idx = prev.value.lastIndexOf('[');
                  const pre = prev.value.slice(0, idx);
                  const rest = prev.value.slice(idx + 2);
                  const posix = POSIX_REGEX_SOURCE[rest];
                  if (posix) {
                    prev.value = pre + posix;
                    state.backtrack = true;
                    advance();

                    if (!bos.output && tokens.indexOf(prev) === 1) {
                      bos.output = ONE_CHAR;
                    }
                    continue;
                  }
                }
              }
            }

            if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {
              value = `\\${value}`;
            }

            if (value === ']' && (prev.value === '[' || prev.value === '[^')) {
              value = `\\${value}`;
            }

            if (opts.posix === true && value === '!' && prev.value === '[') {
              value = '^';
            }

            prev.value += value;
            append({ value });
            continue;
          }

          /**
           * If we're inside a quoted string, continue
           * until we reach the closing double quote.
           */

          if (state.quotes === 1 && value !== '"') {
            value = utils$1.escapeRegex(value);
            prev.value += value;
            append({ value });
            continue;
          }

          /**
           * Double quotes
           */

          if (value === '"') {
            state.quotes = state.quotes === 1 ? 0 : 1;
            if (opts.keepQuotes === true) {
              push({ type: 'text', value });
            }
            continue;
          }

          /**
           * Parentheses
           */

          if (value === '(') {
            increment('parens');
            push({ type: 'paren', value });
            continue;
          }

          if (value === ')') {
            if (state.parens === 0 && opts.strictBrackets === true) {
              throw new SyntaxError(syntaxError('opening', '('));
            }

            const extglob = extglobs[extglobs.length - 1];
            if (extglob && state.parens === extglob.parens + 1) {
              extglobClose(extglobs.pop());
              continue;
            }

            push({ type: 'paren', value, output: state.parens ? ')' : '\\)' });
            decrement('parens');
            continue;
          }

          /**
           * Square brackets
           */

          if (value === '[') {
            if (opts.nobracket === true || !remaining().includes(']')) {
              if (opts.nobracket !== true && opts.strictBrackets === true) {
                throw new SyntaxError(syntaxError('closing', ']'));
              }

              value = `\\${value}`;
            } else {
              increment('brackets');
            }

            push({ type: 'bracket', value });
            continue;
          }

          if (value === ']') {
            if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {
              push({ type: 'text', value, output: `\\${value}` });
              continue;
            }

            if (state.brackets === 0) {
              if (opts.strictBrackets === true) {
                throw new SyntaxError(syntaxError('opening', '['));
              }

              push({ type: 'text', value, output: `\\${value}` });
              continue;
            }

            decrement('brackets');

            const prevValue = prev.value.slice(1);
            if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {
              value = `/${value}`;
            }

            prev.value += value;
            append({ value });

            // when literal brackets are explicitly disabled
            // assume we should match with a regex character class
            if (opts.literalBrackets === false || utils$1.hasRegexChars(prevValue)) {
              continue;
            }

            const escaped = utils$1.escapeRegex(prev.value);
            state.output = state.output.slice(0, -prev.value.length);

            // when literal brackets are explicitly enabled
            // assume we should escape the brackets to match literal characters
            if (opts.literalBrackets === true) {
              state.output += escaped;
              prev.value = escaped;
              continue;
            }

            // when the user specifies nothing, try to match both
            prev.value = `(${capture}${escaped}|${prev.value})`;
            state.output += prev.value;
            continue;
          }

          /**
           * Braces
           */

          if (value === '{' && opts.nobrace !== true) {
            increment('braces');

            const open = {
              type: 'brace',
              value,
              output: '(',
              outputIndex: state.output.length,
              tokensIndex: state.tokens.length
            };

            braces.push(open);
            push(open);
            continue;
          }

          if (value === '}') {
            const brace = braces[braces.length - 1];

            if (opts.nobrace === true || !brace) {
              push({ type: 'text', value, output: value });
              continue;
            }

            let output = ')';

            if (brace.dots === true) {
              const arr = tokens.slice();
              const range = [];

              for (let i = arr.length - 1; i >= 0; i--) {
                tokens.pop();
                if (arr[i].type === 'brace') {
                  break;
                }
                if (arr[i].type !== 'dots') {
                  range.unshift(arr[i].value);
                }
              }

              output = expandRange(range, opts);
              state.backtrack = true;
            }

            if (brace.comma !== true && brace.dots !== true) {
              const out = state.output.slice(0, brace.outputIndex);
              const toks = state.tokens.slice(brace.tokensIndex);
              brace.value = brace.output = '\\{';
              value = output = '\\}';
              state.output = out;
              for (const t of toks) {
                state.output += (t.output || t.value);
              }
            }

            push({ type: 'brace', value, output });
            decrement('braces');
            braces.pop();
            continue;
          }

          /**
           * Pipes
           */

          if (value === '|') {
            if (extglobs.length > 0) {
              extglobs[extglobs.length - 1].conditions++;
            }
            push({ type: 'text', value });
            continue;
          }

          /**
           * Commas
           */

          if (value === ',') {
            let output = value;

            const brace = braces[braces.length - 1];
            if (brace && stack[stack.length - 1] === 'braces') {
              brace.comma = true;
              output = '|';
            }

            push({ type: 'comma', value, output });
            continue;
          }

          /**
           * Slashes
           */

          if (value === '/') {
            // if the beginning of the glob is "./", advance the start
            // to the current index, and don't add the "./" characters
            // to the state. This greatly simplifies lookbehinds when
            // checking for BOS characters like "!" and "." (not "./")
            if (prev.type === 'dot' && state.index === state.start + 1) {
              state.start = state.index + 1;
              state.consumed = '';
              state.output = '';
              tokens.pop();
              prev = bos; // reset "prev" to the first token
              continue;
            }

            push({ type: 'slash', value, output: SLASH_LITERAL });
            continue;
          }

          /**
           * Dots
           */

          if (value === '.') {
            if (state.braces > 0 && prev.type === 'dot') {
              if (prev.value === '.') prev.output = DOT_LITERAL;
              const brace = braces[braces.length - 1];
              prev.type = 'dots';
              prev.output += value;
              prev.value += value;
              brace.dots = true;
              continue;
            }

            if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {
              push({ type: 'text', value, output: DOT_LITERAL });
              continue;
            }

            push({ type: 'dot', value, output: DOT_LITERAL });
            continue;
          }

          /**
           * Question marks
           */

          if (value === '?') {
            const isGroup = prev && prev.value === '(';
            if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
              extglobOpen('qmark', value);
              continue;
            }

            if (prev && prev.type === 'paren') {
              const next = peek();
              let output = value;

              if (next === '<' && !utils$1.supportsLookbehinds()) {
                throw new Error('Node.js v10 or higher is required for regex lookbehinds');
              }

              if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) {
                output = `\\${value}`;
              }

              push({ type: 'text', value, output });
              continue;
            }

            if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {
              push({ type: 'qmark', value, output: QMARK_NO_DOT });
              continue;
            }

            push({ type: 'qmark', value, output: QMARK });
            continue;
          }

          /**
           * Exclamation
           */

          if (value === '!') {
            if (opts.noextglob !== true && peek() === '(') {
              if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {
                extglobOpen('negate', value);
                continue;
              }
            }

            if (opts.nonegate !== true && state.index === 0) {
              negate();
              continue;
            }
          }

          /**
           * Plus
           */

          if (value === '+') {
            if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
              extglobOpen('plus', value);
              continue;
            }

            if ((prev && prev.value === '(') || opts.regex === false) {
              push({ type: 'plus', value, output: PLUS_LITERAL });
              continue;
            }

            if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {
              push({ type: 'plus', value });
              continue;
            }

            push({ type: 'plus', value: PLUS_LITERAL });
            continue;
          }

          /**
           * Plain text
           */

          if (value === '@') {
            if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {
              push({ type: 'at', extglob: true, value, output: '' });
              continue;
            }

            push({ type: 'text', value });
            continue;
          }

          /**
           * Plain text
           */

          if (value !== '*') {
            if (value === '$' || value === '^') {
              value = `\\${value}`;
            }

            const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());
            if (match) {
              value += match[0];
              state.index += match[0].length;
            }

            push({ type: 'text', value });
            continue;
          }

          /**
           * Stars
           */

          if (prev && (prev.type === 'globstar' || prev.star === true)) {
            prev.type = 'star';
            prev.star = true;
            prev.value += value;
            prev.output = star;
            state.backtrack = true;
            state.globstar = true;
            consume(value);
            continue;
          }

          let rest = remaining();
          if (opts.noextglob !== true && /^\([^?]/.test(rest)) {
            extglobOpen('star', value);
            continue;
          }

          if (prev.type === 'star') {
            if (opts.noglobstar === true) {
              consume(value);
              continue;
            }

            const prior = prev.prev;
            const before = prior.prev;
            const isStart = prior.type === 'slash' || prior.type === 'bos';
            const afterStar = before && (before.type === 'star' || before.type === 'globstar');

            if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {
              push({ type: 'star', value, output: '' });
              continue;
            }

            const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');
            const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');
            if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {
              push({ type: 'star', value, output: '' });
              continue;
            }

            // strip consecutive `/**/`
            while (rest.slice(0, 3) === '/**') {
              const after = input[state.index + 4];
              if (after && after !== '/') {
                break;
              }
              rest = rest.slice(3);
              consume('/**', 3);
            }

            if (prior.type === 'bos' && eos()) {
              prev.type = 'globstar';
              prev.value += value;
              prev.output = globstar(opts);
              state.output = prev.output;
              state.globstar = true;
              consume(value);
              continue;
            }

            if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {
              state.output = state.output.slice(0, -(prior.output + prev.output).length);
              prior.output = `(?:${prior.output}`;

              prev.type = 'globstar';
              prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');
              prev.value += value;
              state.globstar = true;
              state.output += prior.output + prev.output;
              consume(value);
              continue;
            }

            if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {
              const end = rest[1] !== void 0 ? '|$' : '';

              state.output = state.output.slice(0, -(prior.output + prev.output).length);
              prior.output = `(?:${prior.output}`;

              prev.type = 'globstar';
              prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;
              prev.value += value;

              state.output += prior.output + prev.output;
              state.globstar = true;

              consume(value + advance());

              push({ type: 'slash', value: '/', output: '' });
              continue;
            }

            if (prior.type === 'bos' && rest[0] === '/') {
              prev.type = 'globstar';
              prev.value += value;
              prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;
              state.output = prev.output;
              state.globstar = true;
              consume(value + advance());
              push({ type: 'slash', value: '/', output: '' });
              continue;
            }

            // remove single star from output
            state.output = state.output.slice(0, -prev.output.length);

            // reset previous token to globstar
            prev.type = 'globstar';
            prev.output = globstar(opts);
            prev.value += value;

            // reset output with globstar
            state.output += prev.output;
            state.globstar = true;
            consume(value);
            continue;
          }

          const token = { type: 'star', value, output: star };

          if (opts.bash === true) {
            token.output = '.*?';
            if (prev.type === 'bos' || prev.type === 'slash') {
              token.output = nodot + token.output;
            }
            push(token);
            continue;
          }

          if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {
            token.output = value;
            push(token);
            continue;
          }

          if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {
            if (prev.type === 'dot') {
              state.output += NO_DOT_SLASH;
              prev.output += NO_DOT_SLASH;

            } else if (opts.dot === true) {
              state.output += NO_DOTS_SLASH;
              prev.output += NO_DOTS_SLASH;

            } else {
              state.output += nodot;
              prev.output += nodot;
            }

            if (peek() !== '*') {
              state.output += ONE_CHAR;
              prev.output += ONE_CHAR;
            }
          }

          push(token);
        }

        while (state.brackets > 0) {
          if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));
          state.output = utils$1.escapeLast(state.output, '[');
          decrement('brackets');
        }

        while (state.parens > 0) {
          if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));
          state.output = utils$1.escapeLast(state.output, '(');
          decrement('parens');
        }

        while (state.braces > 0) {
          if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));
          state.output = utils$1.escapeLast(state.output, '{');
          decrement('braces');
        }

        if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {
          push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });
        }

        // rebuild the output if we had to backtrack at any point
        if (state.backtrack === true) {
          state.output = '';

          for (const token of state.tokens) {
            state.output += token.output != null ? token.output : token.value;

            if (token.suffix) {
              state.output += token.suffix;
            }
          }
        }

        return state;
      };

      /**
       * Fast paths for creating regular expressions for common glob patterns.
       * This can significantly speed up processing and has very little downside
       * impact when none of the fast paths match.
       */

      parse$2.fastpaths = (input, options) => {
        const opts = { ...options };
        const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
        const len = input.length;
        if (len > max) {
          throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
        }

        input = REPLACEMENTS[input] || input;

        // create constants based on platform, for windows or posix
        const {
          DOT_LITERAL,
          SLASH_LITERAL,
          ONE_CHAR,
          DOTS_SLASH,
          NO_DOT,
          NO_DOTS,
          NO_DOTS_SLASH,
          STAR,
          START_ANCHOR
        } = constants$2.globChars(opts.windows);

        const nodot = opts.dot ? NO_DOTS : NO_DOT;
        const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;
        const capture = opts.capture ? '' : '?:';
        const state = { negated: false, prefix: '' };
        let star = opts.bash === true ? '.*?' : STAR;

        if (opts.capture) {
          star = `(${star})`;
        }

        const globstar = (opts) => {
          if (opts.noglobstar === true) return star;
          return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
        };

        const create = str => {
          switch (str) {
            case '*':
              return `${nodot}${ONE_CHAR}${star}`;

            case '.*':
              return `${DOT_LITERAL}${ONE_CHAR}${star}`;

            case '*.*':
              return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;

            case '*/*':
              return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;

            case '**':
              return nodot + globstar(opts);

            case '**/*':
              return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;

            case '**/*.*':
              return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;

            case '**/.*':
              return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;

            default: {
              const match = /^(.*?)\.(\w+)$/.exec(str);
              if (!match) return;

              const source = create(match[1]);
              if (!source) return;

              return source + DOT_LITERAL + match[2];
            }
          }
        };

        const output = utils$1.removePrefix(input, state);
        let source = create(output);

        if (source && opts.strictSlashes !== true) {
          source += `${SLASH_LITERAL}?`;
        }

        return source;
      };

      var parse_1 = parse$2;

      const scan = scan_1;
      const parse$1 = parse_1;
      const utils = utils$3;
      const constants$1 = constants$3;
      const isObject = val => val && typeof val === 'object' && !Array.isArray(val);

      /**
       * Creates a matcher function from one or more glob patterns. The
       * returned function takes a string to match as its first argument,
       * and returns true if the string is a match. The returned matcher
       * function also takes a boolean as the second argument that, when true,
       * returns an object with additional information.
       *
       * ```js
       * const picomatch = require('picomatch');
       * // picomatch(glob[, options]);
       *
       * const isMatch = picomatch('*.!(*a)');
       * console.log(isMatch('a.a')); //=> false
       * console.log(isMatch('a.b')); //=> true
       * ```
       * @name picomatch
       * @param {String|Array} `globs` One or more glob patterns.
       * @param {Object=} `options`
       * @return {Function=} Returns a matcher function.
       * @api public
       */

      const picomatch = (glob, options, returnState = false) => {
        if (Array.isArray(glob)) {
          const fns = glob.map(input => picomatch(input, options, returnState));
          const arrayMatcher = str => {
            for (const isMatch of fns) {
              const state = isMatch(str);
              if (state) return state;
            }
            return false;
          };
          return arrayMatcher;
        }

        const isState = isObject(glob) && glob.tokens && glob.input;

        if (glob === '' || (typeof glob !== 'string' && !isState)) {
          throw new TypeError('Expected pattern to be a non-empty string');
        }

        const opts = options || {};
        const posix = opts.windows;
        const regex = isState
          ? picomatch.compileRe(glob, options)
          : picomatch.makeRe(glob, options, false, true);

        const state = regex.state;
        delete regex.state;

        let isIgnored = () => false;
        if (opts.ignore) {
          const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };
          isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);
        }

        const matcher = (input, returnObject = false) => {
          const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });
          const result = { glob, state, regex, posix, input, output, match, isMatch };

          if (typeof opts.onResult === 'function') {
            opts.onResult(result);
          }

          if (isMatch === false) {
            result.isMatch = false;
            return returnObject ? result : false;
          }

          if (isIgnored(input)) {
            if (typeof opts.onIgnore === 'function') {
              opts.onIgnore(result);
            }
            result.isMatch = false;
            return returnObject ? result : false;
          }

          if (typeof opts.onMatch === 'function') {
            opts.onMatch(result);
          }
          return returnObject ? result : true;
        };

        if (returnState) {
          matcher.state = state;
        }

        return matcher;
      };

      /**
       * Test `input` with the given `regex`. This is used by the main
       * `picomatch()` function to test the input string.
       *
       * ```js
       * const picomatch = require('picomatch');
       * // picomatch.test(input, regex[, options]);
       *
       * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/));
       * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }
       * ```
       * @param {String} `input` String to test.
       * @param {RegExp} `regex`
       * @return {Object} Returns an object with matching info.
       * @api public
       */

      picomatch.test = (input, regex, options, { glob, posix } = {}) => {
        if (typeof input !== 'string') {
          throw new TypeError('Expected input to be a string');
        }

        if (input === '') {
          return { isMatch: false, output: '' };
        }

        const opts = options || {};
        const format = opts.format || (posix ? utils.toPosixSlashes : null);
        let match = input === glob;
        let output = (match && format) ? format(input) : input;

        if (match === false) {
          output = format ? format(input) : input;
          match = output === glob;
        }

        if (match === false || opts.capture === true) {
          if (opts.matchBase === true || opts.basename === true) {
            match = picomatch.matchBase(input, regex, options, posix);
          } else {
            match = regex.exec(output);
          }
        }

        return { isMatch: Boolean(match), match, output };
      };

      /**
       * Match the basename of a filepath.
       *
       * ```js
       * const picomatch = require('picomatch');
       * // picomatch.matchBase(input, glob[, options]);
       * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true
       * ```
       * @param {String} `input` String to test.
       * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).
       * @return {Boolean}
       * @api public
       */

      picomatch.matchBase = (input, glob, options) => {
        const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);
        return regex.test(utils.basename(input));
      };

      /**
       * Returns true if **any** of the given glob `patterns` match the specified `string`.
       *
       * ```js
       * const picomatch = require('picomatch');
       * // picomatch.isMatch(string, patterns[, options]);
       *
       * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true
       * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false
       * ```
       * @param {String|Array} str The string to test.
       * @param {String|Array} patterns One or more glob patterns to use for matching.
       * @param {Object} [options] See available [options](#options).
       * @return {Boolean} Returns true if any patterns match `str`
       * @api public
       */

      picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);

      /**
       * Parse a glob pattern to create the source string for a regular
       * expression.
       *
       * ```js
       * const picomatch = require('picomatch');
       * const result = picomatch.parse(pattern[, options]);
       * ```
       * @param {String} `pattern`
       * @param {Object} `options`
       * @return {Object} Returns an object with useful properties and output to be used as a regex source string.
       * @api public
       */

      picomatch.parse = (pattern, options) => {
        if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));
        return parse$1(pattern, { ...options, fastpaths: false });
      };

      /**
       * Scan a glob pattern to separate the pattern into segments.
       *
       * ```js
       * const picomatch = require('picomatch');
       * // picomatch.scan(input[, options]);
       *
       * const result = picomatch.scan('!./foo/*.js');
       * console.log(result);
       * { prefix: '!./',
       *   input: '!./foo/*.js',
       *   start: 3,
       *   base: 'foo',
       *   glob: '*.js',
       *   isBrace: false,
       *   isBracket: false,
       *   isGlob: true,
       *   isExtglob: false,
       *   isGlobstar: false,
       *   negated: true }
       * ```
       * @param {String} `input` Glob pattern to scan.
       * @param {Object} `options`
       * @return {Object} Returns an object with
       * @api public
       */

      picomatch.scan = (input, options) => scan(input, options);

      /**
       * Create a regular expression from a parsed glob pattern.
       *
       * ```js
       * const picomatch = require('picomatch');
       * const state = picomatch.parse('*.js');
       * // picomatch.compileRe(state[, options]);
       *
       * console.log(picomatch.compileRe(state));
       * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/
       * ```
       * @param {String} `state` The object returned from the `.parse` method.
       * @param {Object} `options`
       * @return {RegExp} Returns a regex created from the given pattern.
       * @api public
       */

      picomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => {
        if (returnOutput === true) {
          return parsed.output;
        }

        const opts = options || {};
        const prepend = opts.contains ? '' : '^';
        const append = opts.contains ? '' : '$';

        let source = `${prepend}(?:${parsed.output})${append}`;
        if (parsed && parsed.negated === true) {
          source = `^(?!${source}).*$`;
        }

        const regex = picomatch.toRegex(source, options);
        if (returnState === true) {
          regex.state = parsed;
        }

        return regex;
      };

      picomatch.makeRe = (input, options, returnOutput = false, returnState = false) => {
        if (!input || typeof input !== 'string') {
          throw new TypeError('Expected a non-empty string');
        }

        const opts = options || {};
        let parsed = { negated: false, fastpaths: true };
        let prefix = '';
        let output;

        if (input.startsWith('./')) {
          input = input.slice(2);
          prefix = parsed.prefix = './';
        }

        if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {
          output = parse$1.fastpaths(input, options);
        }

        if (output === undefined) {
          parsed = parse$1(input, options);
          parsed.prefix = prefix + (parsed.prefix || '');
        } else {
          parsed.output = output;
        }

        return picomatch.compileRe(parsed, options, returnOutput, returnState);
      };

      /**
       * Create a regular expression from the given regex source string.
       *
       * ```js
       * const picomatch = require('picomatch');
       * // picomatch.toRegex(source[, options]);
       *
       * const { output } = picomatch.parse('*.js');
       * console.log(picomatch.toRegex(output));
       * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/
       * ```
       * @param {String} `source` Regular expression source string.
       * @param {Object} `options`
       * @return {RegExp}
       * @api public
       */

      picomatch.toRegex = (source, options) => {
        try {
          const opts = options || {};
          return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));
        } catch (err) {
          if (options && options.debug === true) throw err;
          return /$^/;
        }
      };

      /**
       * Picomatch constants.
       * @return {Object}
       */

      picomatch.constants = constants$1;

      /**
       * Expose "picomatch"
       */

      var picomatch_1 = picomatch;

      (function (module) {

        module.exports = picomatch_1;
      }(picomatchBrowser));

      var pm = /*@__PURE__*/getDefaultExportFromCjs(picomatchBrowserExports);

      function isArray(arg) {
        return Array.isArray(arg);
      }
      function ensureArray(thing) {
        if (isArray(thing))
          return thing;
        if (thing == null)
          return [];
        return [thing];
      }
      const globToTest = (glob) => {
        const pattern = glob;
        const fn = pm(pattern, { dot: true });
        return {
          test: (what) => {
            const result = fn(what);
            return result;
          },
        };
      };
      const testTrue = {
        test: () => true,
      };
      const getMatcher = (filter) => {
        const bundleTest = "bundle" in filter && filter.bundle != null ? globToTest(filter.bundle) : testTrue;
        const fileTest = "file" in filter && filter.file != null ? globToTest(filter.file) : testTrue;
        return { bundleTest, fileTest };
      };
      const createFilter = (include, exclude) => {
        const includeMatchers = ensureArray(include).map(getMatcher);
        const excludeMatchers = ensureArray(exclude).map(getMatcher);
        return (bundleId, id) => {
          for (let i = 0; i < excludeMatchers.length; ++i) {
            const { bundleTest, fileTest } = excludeMatchers[i];
            if (bundleTest.test(bundleId) && fileTest.test(id))
              return false;
          }
          for (let i = 0; i < includeMatchers.length; ++i) {
            const { bundleTest, fileTest } = includeMatchers[i];
            if (bundleTest.test(bundleId) && fileTest.test(id))
              return true;
          }
          return !includeMatchers.length;
        };
      };

      const throttleFilter = (callback, limit) => {
        let waiting = false;
        return (val) => {
          if (!waiting) {
            callback(val);
            waiting = true;
            setTimeout(() => {
              waiting = false;
            }, limit);
          }
        };
      };
      const prepareFilter = (filt) => {
        if (filt === "")
          return [];
        return (filt
          .split(",")
          // remove spaces before and after
          .map((entry) => entry.trim())
          // unquote "
          .map((entry) => entry.startsWith('"') && entry.endsWith('"') ? entry.substring(1, entry.length - 1) : entry)
          // unquote '
          .map((entry) => entry.startsWith("'") && entry.endsWith("'") ? entry.substring(1, entry.length - 1) : entry)
          // remove empty strings
          .filter((entry) => entry)
          // parse bundle:file
          .map((entry) => entry.split(":"))
          // normalize entry just in case
          .flatMap((entry) => {
            if (entry.length === 0)
              return [];
            let bundle = null;
            let file = null;
            if (entry.length === 1 && entry[0]) {
              file = entry[0];
              return [{ file, bundle }];
            }
            bundle = entry[0] || null;
            file = entry.slice(1).join(":") || null;
            return [{ bundle, file }];
          }));
      };
      const useFilter = () => {
        const [includeFilter, setIncludeFilter] = p("");
        const [excludeFilter, setExcludeFilter] = p("");
        const setIncludeFilterTrottled = F(() => throttleFilter(setIncludeFilter, 200), []);
        const setExcludeFilterTrottled = F(() => throttleFilter(setExcludeFilter, 200), []);
        const isIncluded = F(() => createFilter(prepareFilter(includeFilter), prepareFilter(excludeFilter)), [includeFilter, excludeFilter]);
        const getModuleFilterMultiplier = T((bundleId, data) => {
          return isIncluded(bundleId, data.id) ? 1 : 0;
        }, [isIncluded]);
        return {
          getModuleFilterMultiplier,
          includeFilter,
          excludeFilter,
          setExcludeFilter: setExcludeFilterTrottled,
          setIncludeFilter: setIncludeFilterTrottled,
        };
      };

      function ascending(a, b) {
        return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
      }

      function descending(a, b) {
        return a == null || b == null ? NaN
          : b < a ? -1
            : b > a ? 1
              : b >= a ? 0
                : NaN;
      }

      function bisector(f) {
        let compare1, compare2, delta;

        // If an accessor is specified, promote it to a comparator. In this case we
        // can test whether the search value is (self-) comparable. We can’t do this
        // for a comparator (except for specific, known comparators) because we can’t
        // tell if the comparator is symmetric, and an asymmetric comparator can’t be
        // used to test whether a single value is comparable.
        if (f.length !== 2) {
          compare1 = ascending;
          compare2 = (d, x) => ascending(f(d), x);
          delta = (d, x) => f(d) - x;
        } else {
          compare1 = f === ascending || f === descending ? f : zero$1;
          compare2 = f;
          delta = f;
        }

        function left(a, x, lo = 0, hi = a.length) {
          if (lo < hi) {
            if (compare1(x, x) !== 0) return hi;
            do {
              const mid = (lo + hi) >>> 1;
              if (compare2(a[mid], x) < 0) lo = mid + 1;
              else hi = mid;
            } while (lo < hi);
          }
          return lo;
        }

        function right(a, x, lo = 0, hi = a.length) {
          if (lo < hi) {
            if (compare1(x, x) !== 0) return hi;
            do {
              const mid = (lo + hi) >>> 1;
              if (compare2(a[mid], x) <= 0) lo = mid + 1;
              else hi = mid;
            } while (lo < hi);
          }
          return lo;
        }

        function center(a, x, lo = 0, hi = a.length) {
          const i = left(a, x, lo, hi - 1);
          return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;
        }

        return { left, center, right };
      }

      function zero$1() {
        return 0;
      }

      function number$1(x) {
        return x === null ? NaN : +x;
      }

      const ascendingBisect = bisector(ascending);
      const bisectRight = ascendingBisect.right;
      bisector(number$1).center;

      class InternMap extends Map {
        constructor(entries, key = keyof) {
          super();
          Object.defineProperties(this, { _intern: { value: new Map() }, _key: { value: key } });
          if (entries != null) for (const [key, value] of entries) this.set(key, value);
        }
        get(key) {
          return super.get(intern_get(this, key));
        }
        has(key) {
          return super.has(intern_get(this, key));
        }
        set(key, value) {
          return super.set(intern_set(this, key), value);
        }
        delete(key) {
          return super.delete(intern_delete(this, key));
        }
      }

      function intern_get({ _intern, _key }, value) {
        const key = _key(value);
        return _intern.has(key) ? _intern.get(key) : value;
      }

      function intern_set({ _intern, _key }, value) {
        const key = _key(value);
        if (_intern.has(key)) return _intern.get(key);
        _intern.set(key, value);
        return value;
      }

      function intern_delete({ _intern, _key }, value) {
        const key = _key(value);
        if (_intern.has(key)) {
          value = _intern.get(key);
          _intern.delete(key);
        }
        return value;
      }

      function keyof(value) {
        return value !== null && typeof value === "object" ? value.valueOf() : value;
      }

      function identity$2(x) {
        return x;
      }

      function group(values, ...keys) {
        return nest(values, identity$2, identity$2, keys);
      }

      function nest(values, map, reduce, keys) {
        return (function regroup(values, i) {
          if (i >= keys.length) return reduce(values);
          const groups = new InternMap();
          const keyof = keys[i++];
          let index = -1;
          for (const value of values) {
            const key = keyof(value, ++index, values);
            const group = groups.get(key);
            if (group) group.push(value);
            else groups.set(key, [value]);
          }
          for (const [key, values] of groups) {
            groups.set(key, regroup(values, i));
          }
          return map(groups);
        })(values, 0);
      }

      var e10 = Math.sqrt(50),
        e5 = Math.sqrt(10),
        e2 = Math.sqrt(2);

      function ticks(start, stop, count) {
        var reverse,
          i = -1,
          n,
          ticks,
          step;

        stop = +stop, start = +start, count = +count;
        if (start === stop && count > 0) return [start];
        if (reverse = stop < start) n = start, start = stop, stop = n;
        if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];

        if (step > 0) {
          let r0 = Math.round(start / step), r1 = Math.round(stop / step);
          if (r0 * step < start) ++r0;
          if (r1 * step > stop) --r1;
          ticks = new Array(n = r1 - r0 + 1);
          while (++i < n) ticks[i] = (r0 + i) * step;
        } else {
          step = -step;
          let r0 = Math.round(start * step), r1 = Math.round(stop * step);
          if (r0 / step < start) ++r0;
          if (r1 / step > stop) --r1;
          ticks = new Array(n = r1 - r0 + 1);
          while (++i < n) ticks[i] = (r0 + i) / step;
        }

        if (reverse) ticks.reverse();

        return ticks;
      }

      function tickIncrement(start, stop, count) {
        var step = (stop - start) / Math.max(0, count),
          power = Math.floor(Math.log(step) / Math.LN10),
          error = step / Math.pow(10, power);
        return power >= 0
          ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)
          : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);
      }

      function tickStep(start, stop, count) {
        var step0 = Math.abs(stop - start) / Math.max(0, count),
          step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),
          error = step0 / step1;
        if (error >= e10) step1 *= 10;
        else if (error >= e5) step1 *= 5;
        else if (error >= e2) step1 *= 2;
        return stop < start ? -step1 : step1;
      }

      const TOP_PADDING = 20;
      const PADDING = 2;

      const Node = ({ node, onMouseOver, onClick, selected }) => {
        const { getModuleColor } = q(StaticContext);
        const { backgroundColor, fontColor } = getModuleColor(node);
        const { x0, x1, y1, y0, data, children = null } = node;
        const textRef = _(null);
        const textRectRef = _();
        const width = x1 - x0;
        const height = y1 - y0;
        const textProps = {
          "font-size": "0.7em",
          "dominant-baseline": "middle",
          "text-anchor": "middle",
          x: width / 2,
        };
        if (children != null) {
          textProps.y = (TOP_PADDING + PADDING) / 2;
        }
        else {
          textProps.y = height / 2;
        }
        s(() => {
          if (width == 0 || height == 0 || !textRef.current) {
            return;
          }
          if (textRectRef.current == null) {
            textRectRef.current = textRef.current.getBoundingClientRect();
          }
          let scale = 1;
          if (children != null) {
            scale = Math.min((width * 0.9) / textRectRef.current.width, Math.min(height, TOP_PADDING + PADDING) / textRectRef.current.height);
            scale = Math.min(1, scale);
            textRef.current.setAttribute("y", String(Math.min(TOP_PADDING + PADDING, height) / 2 / scale));
            textRef.current.setAttribute("x", String(width / 2 / scale));
          }
          else {
            scale = Math.min((width * 0.9) / textRectRef.current.width, (height * 0.9) / textRectRef.current.height);
            scale = Math.min(1, scale);
            textRef.current.setAttribute("y", String(height / 2 / scale));
            textRef.current.setAttribute("x", String(width / 2 / scale));
          }
          textRef.current.setAttribute("transform", `scale(${scale.toFixed(2)})`);
        }, [children, height, width]);
        if (width == 0 || height == 0) {
          return null;
        }
        return (o$1("g", Object.assign({
          className: "node", transform: `translate(${x0},${y0})`, onClick: (event) => {
            event.stopPropagation();
            onClick(node);
          }, onMouseOver: (event) => {
            event.stopPropagation();
            onMouseOver(node);
          }
        }, {
          children: [o$1("rect", { fill: backgroundColor, rx: 2, ry: 2, width: x1 - x0, height: y1 - y0, stroke: selected ? "#fff" : undefined, "stroke-width": selected ? 2 : undefined }), o$1("text", Object.assign({
            ref: textRef, fill: fontColor, onClick: (event) => {
              var _a;
              if (((_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.toString()) !== "") {
                event.stopPropagation();
              }
            }
          }, textProps, { children: data.name }))]
        })));
      };

      const TreeMap = ({ root, onNodeHover, selectedNode, onNodeClick, }) => {
        const { width, height, getModuleIds } = q(StaticContext);
        console.time("layering");
        // this will make groups by height
        const nestedData = F(() => {
          const nestedDataMap = group(root.descendants(), (d) => d.height);
          const nestedData = Array.from(nestedDataMap, ([key, values]) => ({
            key,
            values,
          }));
          nestedData.sort((a, b) => b.key - a.key);
          return nestedData;
        }, [root]);
        console.timeEnd("layering");
        return (o$1("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", viewBox: `0 0 ${width} ${height}` }, {
          children: nestedData.map(({ key, values }) => {
            return (o$1("g", Object.assign({ className: "layer" }, {
              children: values.map((node) => {
                return (o$1(Node, { node: node, onMouseOver: onNodeHover, selected: selectedNode === node, onClick: onNodeClick }, getModuleIds(node.data).nodeUid.id));
              })
            }), key));
          })
        })));
      };

      var bytesExports = {};
      var bytes$1 = {
        get exports() { return bytesExports; },
        set exports(v) { bytesExports = v; },
      };

      /*!
       * bytes
       * Copyright(c) 2012-2014 TJ Holowaychuk
       * Copyright(c) 2015 Jed Watson
       * MIT Licensed
       */

      /**
       * Module exports.
       * @public
       */

      bytes$1.exports = bytes;
      var format_1 = bytesExports.format = format$1;
      bytesExports.parse = parse;

      /**
       * Module variables.
       * @private
       */

      var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g;

      var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/;

      var map$1 = {
        b: 1,
        kb: 1 << 10,
        mb: 1 << 20,
        gb: 1 << 30,
        tb: Math.pow(1024, 4),
        pb: Math.pow(1024, 5),
      };

      var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;

      /**
       * Convert the given value in bytes into a string or parse to string to an integer in bytes.
       *
       * @param {string|number} value
       * @param {{
       *  case: [string],
       *  decimalPlaces: [number]
       *  fixedDecimals: [boolean]
       *  thousandsSeparator: [string]
       *  unitSeparator: [string]
       *  }} [options] bytes options.
       *
       * @returns {string|number|null}
       */

      function bytes(value, options) {
        if (typeof value === 'string') {
          return parse(value);
        }

        if (typeof value === 'number') {
          return format$1(value, options);
        }

        return null;
      }

      /**
       * Format the given value in bytes into a string.
       *
       * If the value is negative, it is kept as such. If it is a float,
       * it is rounded.
       *
       * @param {number} value
       * @param {object} [options]
       * @param {number} [options.decimalPlaces=2]
       * @param {number} [options.fixedDecimals=false]
       * @param {string} [options.thousandsSeparator=]
       * @param {string} [options.unit=]
       * @param {string} [options.unitSeparator=]
       *
       * @returns {string|null}
       * @public
       */

      function format$1(value, options) {
        if (!Number.isFinite(value)) {
          return null;
        }

        var mag = Math.abs(value);
        var thousandsSeparator = (options && options.thousandsSeparator) || '';
        var unitSeparator = (options && options.unitSeparator) || '';
        var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;
        var fixedDecimals = Boolean(options && options.fixedDecimals);
        var unit = (options && options.unit) || '';

        if (!unit || !map$1[unit.toLowerCase()]) {
          if (mag >= map$1.pb) {
            unit = 'PB';
          } else if (mag >= map$1.tb) {
            unit = 'TB';
          } else if (mag >= map$1.gb) {
            unit = 'GB';
          } else if (mag >= map$1.mb) {
            unit = 'MB';
          } else if (mag >= map$1.kb) {
            unit = 'KB';
          } else {
            unit = 'B';
          }
        }

        var val = value / map$1[unit.toLowerCase()];
        var str = val.toFixed(decimalPlaces);

        if (!fixedDecimals) {
          str = str.replace(formatDecimalsRegExp, '$1');
        }

        if (thousandsSeparator) {
          str = str.split('.').map(function (s, i) {
            return i === 0
              ? s.replace(formatThousandsRegExp, thousandsSeparator)
              : s
          }).join('.');
        }

        return str + unitSeparator + unit;
      }

      /**
       * Parse the string value into an integer in bytes.
       *
       * If no unit is given, it is assumed the value is in bytes.
       *
       * @param {number|string} val
       *
       * @returns {number|null}
       * @public
       */

      function parse(val) {
        if (typeof val === 'number' && !isNaN(val)) {
          return val;
        }

        if (typeof val !== 'string') {
          return null;
        }

        // Test if the string passed is valid
        var results = parseRegExp.exec(val);
        var floatValue;
        var unit = 'b';

        if (!results) {
          // Nothing could be extracted from the given string
          floatValue = parseInt(val, 10);
          unit = 'b';
        } else {
          // Retrieve the value and the unit
          floatValue = parseFloat(results[1]);
          unit = results[4].toLowerCase();
        }

        if (isNaN(floatValue)) {
          return null;
        }

        return Math.floor(map$1[unit] * floatValue);
      }

      const Tooltip_marginX = 10;
      const Tooltip_marginY = 30;
      const SOURCEMAP_RENDERED = (o$1("span", { children: [" ", o$1("b", { children: LABELS.renderedLength }), " is a number of characters in the file after individual and ", o$1("br", {}), " ", "whole bundle transformations according to sourcemap."] }));
      const RENDRED = (o$1("span", { children: [o$1("b", { children: LABELS.renderedLength }), " is a byte size of individual file after transformations and treeshake."] }));
      const COMPRESSED = (o$1("span", { children: [o$1("b", { children: LABELS.gzipLength }), " and ", o$1("b", { children: LABELS.brotliLength }), " is a byte size of individual file after individual transformations,", o$1("br", {}), " treeshake and compression."] }));
      const Tooltip = ({ node, visible, root, sizeProperty, }) => {
        const { availableSizeProperties, getModuleSize, data } = q(StaticContext);
        const ref = _(null);
        const [style, setStyle] = p({});
        const content = F(() => {
          if (!node)
            return null;
          const mainSize = getModuleSize(node.data, sizeProperty);
          const percentageNum = (100 * mainSize) / getModuleSize(root.data, sizeProperty);
          const percentage = percentageNum.toFixed(2);
          const percentageString = percentage + "%";
          const path = node
            .ancestors()
            .reverse()
            .map((d) => d.data.name)
            .join("/");
          let dataNode = null;
          if (!isModuleTree(node.data)) {
            const mainUid = data.nodeParts[node.data.uid].metaUid;
            dataNode = data.nodeMetas[mainUid];
          }
          return (o$1(p$1, {
            children: [o$1("div", { children: path }), availableSizeProperties.map((sizeProp) => {
              if (sizeProp === sizeProperty) {
                return (o$1("div", { children: [o$1("b", { children: [LABELS[sizeProp], ": ", format_1(mainSize)] }), " ", "(", percentageString, ")"] }, sizeProp));
              }
              else {
                return (o$1("div", { children: [LABELS[sizeProp], ": ", format_1(getModuleSize(node.data, sizeProp))] }, sizeProp));
              }
            }), o$1("br", {}), dataNode && dataNode.importedBy.length > 0 && (o$1("div", {
              children: [o$1("div", { children: [o$1("b", { children: "Imported By" }), ":"] }), dataNode.importedBy.map(({ uid }) => {
                const id = data.nodeMetas[uid].id;
                return o$1("div", { children: id }, id);
              })]
            })), o$1("br", {}), o$1("small", { children: data.options.sourcemap ? SOURCEMAP_RENDERED : RENDRED }), (data.options.gzip || data.options.brotli) && (o$1(p$1, { children: [o$1("br", {}), o$1("small", { children: COMPRESSED })] }))]
          }));
        }, [availableSizeProperties, data, getModuleSize, node, root.data, sizeProperty]);
        const updatePosition = (mouseCoords) => {
          if (!ref.current)
            return;
          const pos = {
            left: mouseCoords.x + Tooltip_marginX,
            top: mouseCoords.y + Tooltip_marginY,
          };
          const boundingRect = ref.current.getBoundingClientRect();
          if (pos.left + boundingRect.width > window.innerWidth) {
            // Shifting horizontally
            pos.left = window.innerWidth - boundingRect.width;
          }
          if (pos.top + boundingRect.height > window.innerHeight) {
            // Flipping vertically
            pos.top = mouseCoords.y - Tooltip_marginY - boundingRect.height;
          }
          setStyle(pos);
        };
        h(() => {
          const handleMouseMove = (event) => {
            updatePosition({
              x: event.pageX,
              y: event.pageY,
            });
          };
          document.addEventListener("mousemove", handleMouseMove, true);
          return () => {
            document.removeEventListener("mousemove", handleMouseMove, true);
          };
        }, []);
        return (o$1("div", Object.assign({ className: `tooltip ${visible ? "" : "tooltip-hidden"}`, ref: ref, style: style }, { children: content })));
      };

      const Chart = ({ root, sizeProperty, selectedNode, setSelectedNode, }) => {
        const [showTooltip, setShowTooltip] = p(false);
        const [tooltipNode, setTooltipNode] = p(undefined);
        h(() => {
          const handleMouseOut = () => {
            setShowTooltip(false);
          };
          document.addEventListener("mouseover", handleMouseOut);
          return () => {
            document.removeEventListener("mouseover", handleMouseOut);
          };
        }, []);
        return (o$1(p$1, {
          children: [o$1(TreeMap, {
            root: root, onNodeHover: (node) => {
              setTooltipNode(node);
              setShowTooltip(true);
            }, selectedNode: selectedNode, onNodeClick: (node) => {
              setSelectedNode(selectedNode === node ? undefined : node);
            }
          }), o$1(Tooltip, { visible: showTooltip, node: tooltipNode, root: root, sizeProperty: sizeProperty })]
        }));
      };

      const Main = () => {
        const { availableSizeProperties, rawHierarchy, getModuleSize, layout, data } = q(StaticContext);
        const [sizeProperty, setSizeProperty] = p(availableSizeProperties[0]);
        const [selectedNode, setSelectedNode] = p(undefined);
        const { getModuleFilterMultiplier, setExcludeFilter, setIncludeFilter } = useFilter();
        console.time("getNodeSizeMultiplier");
        const getNodeSizeMultiplier = F(() => {
          const selectedMultiplier = 1; // selectedSize < rootSize * increaseFactor ? (rootSize * increaseFactor) / selectedSize : rootSize / selectedSize;
          const nonSelectedMultiplier = 0; // 1 / selectedMultiplier
          if (selectedNode === undefined) {
            return () => 1;
          }
          else if (isModuleTree(selectedNode.data)) {
            const leaves = new Set(selectedNode.leaves().map((d) => d.data));
            return (node) => {
              if (leaves.has(node)) {
                return selectedMultiplier;
              }
              return nonSelectedMultiplier;
            };
          }
          else {
            return (node) => {
              if (node === selectedNode.data) {
                return selectedMultiplier;
              }
              return nonSelectedMultiplier;
            };
          }
        }, [getModuleSize, rawHierarchy.data, selectedNode, sizeProperty]);
        console.timeEnd("getNodeSizeMultiplier");
        console.time("root hierarchy compute");
        // root here always be the same as rawHierarchy even after layouting
        const root = F(() => {
          const rootWithSizesAndSorted = rawHierarchy
            .sum((node) => {
              var _a;
              if (isModuleTree(node))
                return 0;
              const meta = data.nodeMetas[data.nodeParts[node.uid].metaUid];
              const bundleId = (_a = Object.entries(meta.moduleParts).find(([bundleId, uid]) => uid == node.uid)) === null || _a === void 0 ? void 0 : _a[0];
              const ownSize = getModuleSize(node, sizeProperty);
              const zoomMultiplier = getNodeSizeMultiplier(node);
              const filterMultiplier = getModuleFilterMultiplier(bundleId, meta);
              return ownSize * zoomMultiplier * filterMultiplier;
            })
            .sort((a, b) => getModuleSize(a.data, sizeProperty) - getModuleSize(b.data, sizeProperty));
          return layout(rootWithSizesAndSorted);
        }, [
          data,
          getModuleFilterMultiplier,
          getModuleSize,
          getNodeSizeMultiplier,
          layout,
          rawHierarchy,
          sizeProperty,
        ]);
        console.timeEnd("root hierarchy compute");
        return (o$1(p$1, { children: [o$1(SideBar, { sizeProperty: sizeProperty, availableSizeProperties: availableSizeProperties, setSizeProperty: setSizeProperty, onExcludeChange: setExcludeFilter, onIncludeChange: setIncludeFilter }), o$1(Chart, { root: root, sizeProperty: sizeProperty, selectedNode: selectedNode, setSelectedNode: setSelectedNode })] }));
      };

      function initRange(domain, range) {
        switch (arguments.length) {
          case 0: break;
          case 1: this.range(domain); break;
          default: this.range(range).domain(domain); break;
        }
        return this;
      }

      function initInterpolator(domain, interpolator) {
        switch (arguments.length) {
          case 0: break;
          case 1: {
            if (typeof domain === "function") this.interpolator(domain);
            else this.range(domain);
            break;
          }
          default: {
            this.domain(domain);
            if (typeof interpolator === "function") this.interpolator(interpolator);
            else this.range(interpolator);
            break;
          }
        }
        return this;
      }

      function define(constructor, factory, prototype) {
        constructor.prototype = factory.prototype = prototype;
        prototype.constructor = constructor;
      }

      function extend(parent, definition) {
        var prototype = Object.create(parent.prototype);
        for (var key in definition) prototype[key] = definition[key];
        return prototype;
      }

      function Color() { }

      var darker = 0.7;
      var brighter = 1 / darker;

      var reI = "\\s*([+-]?\\d+)\\s*",
        reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",
        reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",
        reHex = /^#([0-9a-f]{3,8})$/,
        reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`),
        reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`),
        reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`),
        reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`),
        reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`),
        reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`);

      var named = {
        aliceblue: 0xf0f8ff,
        antiquewhite: 0xfaebd7,
        aqua: 0x00ffff,
        aquamarine: 0x7fffd4,
        azure: 0xf0ffff,
        beige: 0xf5f5dc,
        bisque: 0xffe4c4,
        black: 0x000000,
        blanchedalmond: 0xffebcd,
        blue: 0x0000ff,
        blueviolet: 0x8a2be2,
        brown: 0xa52a2a,
        burlywood: 0xdeb887,
        cadetblue: 0x5f9ea0,
        chartreuse: 0x7fff00,
        chocolate: 0xd2691e,
        coral: 0xff7f50,
        cornflowerblue: 0x6495ed,
        cornsilk: 0xfff8dc,
        crimson: 0xdc143c,
        cyan: 0x00ffff,
        darkblue: 0x00008b,
        darkcyan: 0x008b8b,
        darkgoldenrod: 0xb8860b,
        darkgray: 0xa9a9a9,
        darkgreen: 0x006400,
        darkgrey: 0xa9a9a9,
        darkkhaki: 0xbdb76b,
        darkmagenta: 0x8b008b,
        darkolivegreen: 0x556b2f,
        darkorange: 0xff8c00,
        darkorchid: 0x9932cc,
        darkred: 0x8b0000,
        darksalmon: 0xe9967a,
        darkseagreen: 0x8fbc8f,
        darkslateblue: 0x483d8b,
        darkslategray: 0x2f4f4f,
        darkslategrey: 0x2f4f4f,
        darkturquoise: 0x00ced1,
        darkviolet: 0x9400d3,
        deeppink: 0xff1493,
        deepskyblue: 0x00bfff,
        dimgray: 0x696969,
        dimgrey: 0x696969,
        dodgerblue: 0x1e90ff,
        firebrick: 0xb22222,
        floralwhite: 0xfffaf0,
        forestgreen: 0x228b22,
        fuchsia: 0xff00ff,
        gainsboro: 0xdcdcdc,
        ghostwhite: 0xf8f8ff,
        gold: 0xffd700,
        goldenrod: 0xdaa520,
        gray: 0x808080,
        green: 0x008000,
        greenyellow: 0xadff2f,
        grey: 0x808080,
        honeydew: 0xf0fff0,
        hotpink: 0xff69b4,
        indianred: 0xcd5c5c,
        indigo: 0x4b0082,
        ivory: 0xfffff0,
        khaki: 0xf0e68c,
        lavender: 0xe6e6fa,
        lavenderblush: 0xfff0f5,
        lawngreen: 0x7cfc00,
        lemonchiffon: 0xfffacd,
        lightblue: 0xadd8e6,
        lightcoral: 0xf08080,
        lightcyan: 0xe0ffff,
        lightgoldenrodyellow: 0xfafad2,
        lightgray: 0xd3d3d3,
        lightgreen: 0x90ee90,
        lightgrey: 0xd3d3d3,
        lightpink: 0xffb6c1,
        lightsalmon: 0xffa07a,
        lightseagreen: 0x20b2aa,
        lightskyblue: 0x87cefa,
        lightslategray: 0x778899,
        lightslategrey: 0x778899,
        lightsteelblue: 0xb0c4de,
        lightyellow: 0xffffe0,
        lime: 0x00ff00,
        limegreen: 0x32cd32,
        linen: 0xfaf0e6,
        magenta: 0xff00ff,
        maroon: 0x800000,
        mediumaquamarine: 0x66cdaa,
        mediumblue: 0x0000cd,
        mediumorchid: 0xba55d3,
        mediumpurple: 0x9370db,
        mediumseagreen: 0x3cb371,
        mediumslateblue: 0x7b68ee,
        mediumspringgreen: 0x00fa9a,
        mediumturquoise: 0x48d1cc,
        mediumvioletred: 0xc71585,
        midnightblue: 0x191970,
        mintcream: 0xf5fffa,
        mistyrose: 0xffe4e1,
        moccasin: 0xffe4b5,
        navajowhite: 0xffdead,
        navy: 0x000080,
        oldlace: 0xfdf5e6,
        olive: 0x808000,
        olivedrab: 0x6b8e23,
        orange: 0xffa500,
        orangered: 0xff4500,
        orchid: 0xda70d6,
        palegoldenrod: 0xeee8aa,
        palegreen: 0x98fb98,
        paleturquoise: 0xafeeee,
        palevioletred: 0xdb7093,
        papayawhip: 0xffefd5,
        peachpuff: 0xffdab9,
        peru: 0xcd853f,
        pink: 0xffc0cb,
        plum: 0xdda0dd,
        powderblue: 0xb0e0e6,
        purple: 0x800080,
        rebeccapurple: 0x663399,
        red: 0xff0000,
        rosybrown: 0xbc8f8f,
        royalblue: 0x4169e1,
        saddlebrown: 0x8b4513,
        salmon: 0xfa8072,
        sandybrown: 0xf4a460,
        seagreen: 0x2e8b57,
        seashell: 0xfff5ee,
        sienna: 0xa0522d,
        silver: 0xc0c0c0,
        skyblue: 0x87ceeb,
        slateblue: 0x6a5acd,
        slategray: 0x708090,
        slategrey: 0x708090,
        snow: 0xfffafa,
        springgreen: 0x00ff7f,
        steelblue: 0x4682b4,
        tan: 0xd2b48c,
        teal: 0x008080,
        thistle: 0xd8bfd8,
        tomato: 0xff6347,
        turquoise: 0x40e0d0,
        violet: 0xee82ee,
        wheat: 0xf5deb3,
        white: 0xffffff,
        whitesmoke: 0xf5f5f5,
        yellow: 0xffff00,
        yellowgreen: 0x9acd32
      };

      define(Color, color, {
        copy(channels) {
          return Object.assign(new this.constructor, this, channels);
        },
        displayable() {
          return this.rgb().displayable();
        },
        hex: color_formatHex, // Deprecated! Use color.formatHex.
        formatHex: color_formatHex,
        formatHex8: color_formatHex8,
        formatHsl: color_formatHsl,
        formatRgb: color_formatRgb,
        toString: color_formatRgb
      });

      function color_formatHex() {
        return this.rgb().formatHex();
      }

      function color_formatHex8() {
        return this.rgb().formatHex8();
      }

      function color_formatHsl() {
        return hslConvert(this).formatHsl();
      }

      function color_formatRgb() {
        return this.rgb().formatRgb();
      }

      function color(format) {
        var m, l;
        format = (format + "").trim().toLowerCase();
        return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000
          : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00
            : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000
              : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000
                : null) // invalid hex
          : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)
            : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)
              : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)
                : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)
                  : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)
                    : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)
                      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins
                        : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0)
                          : null;
      }

      function rgbn(n) {
        return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);
      }

      function rgba(r, g, b, a) {
        if (a <= 0) r = g = b = NaN;
        return new Rgb(r, g, b, a);
      }

      function rgbConvert(o) {
        if (!(o instanceof Color)) o = color(o);
        if (!o) return new Rgb;
        o = o.rgb();
        return new Rgb(o.r, o.g, o.b, o.opacity);
      }

      function rgb$1(r, g, b, opacity) {
        return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);
      }

      function Rgb(r, g, b, opacity) {
        this.r = +r;
        this.g = +g;
        this.b = +b;
        this.opacity = +opacity;
      }

      define(Rgb, rgb$1, extend(Color, {
        brighter(k) {
          k = k == null ? brighter : Math.pow(brighter, k);
          return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
        },
        darker(k) {
          k = k == null ? darker : Math.pow(darker, k);
          return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
        },
        rgb() {
          return this;
        },
        clamp() {
          return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));
        },
        displayable() {
          return (-0.5 <= this.r && this.r < 255.5)
            && (-0.5 <= this.g && this.g < 255.5)
            && (-0.5 <= this.b && this.b < 255.5)
            && (0 <= this.opacity && this.opacity <= 1);
        },
        hex: rgb_formatHex, // Deprecated! Use color.formatHex.
        formatHex: rgb_formatHex,
        formatHex8: rgb_formatHex8,
        formatRgb: rgb_formatRgb,
        toString: rgb_formatRgb
      }));

      function rgb_formatHex() {
        return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;
      }

      function rgb_formatHex8() {
        return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;
      }

      function rgb_formatRgb() {
        const a = clampa(this.opacity);
        return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`;
      }

      function clampa(opacity) {
        return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));
      }

      function clampi(value) {
        return Math.max(0, Math.min(255, Math.round(value) || 0));
      }

      function hex(value) {
        value = clampi(value);
        return (value < 16 ? "0" : "") + value.toString(16);
      }

      function hsla(h, s, l, a) {
        if (a <= 0) h = s = l = NaN;
        else if (l <= 0 || l >= 1) h = s = NaN;
        else if (s <= 0) h = NaN;
        return new Hsl(h, s, l, a);
      }

      function hslConvert(o) {
        if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);
        if (!(o instanceof Color)) o = color(o);
        if (!o) return new Hsl;
        if (o instanceof Hsl) return o;
        o = o.rgb();
        var r = o.r / 255,
          g = o.g / 255,
          b = o.b / 255,
          min = Math.min(r, g, b),
          max = Math.max(r, g, b),
          h = NaN,
          s = max - min,
          l = (max + min) / 2;
        if (s) {
          if (r === max) h = (g - b) / s + (g < b) * 6;
          else if (g === max) h = (b - r) / s + 2;
          else h = (r - g) / s + 4;
          s /= l < 0.5 ? max + min : 2 - max - min;
          h *= 60;
        } else {
          s = l > 0 && l < 1 ? 0 : h;
        }
        return new Hsl(h, s, l, o.opacity);
      }

      function hsl(h, s, l, opacity) {
        return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);
      }

      function Hsl(h, s, l, opacity) {
        this.h = +h;
        this.s = +s;
        this.l = +l;
        this.opacity = +opacity;
      }

      define(Hsl, hsl, extend(Color, {
        brighter(k) {
          k = k == null ? brighter : Math.pow(brighter, k);
          return new Hsl(this.h, this.s, this.l * k, this.opacity);
        },
        darker(k) {
          k = k == null ? darker : Math.pow(darker, k);
          return new Hsl(this.h, this.s, this.l * k, this.opacity);
        },
        rgb() {
          var h = this.h % 360 + (this.h < 0) * 360,
            s = isNaN(h) || isNaN(this.s) ? 0 : this.s,
            l = this.l,
            m2 = l + (l < 0.5 ? l : 1 - l) * s,
            m1 = 2 * l - m2;
          return new Rgb(
            hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),
            hsl2rgb(h, m1, m2),
            hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),
            this.opacity
          );
        },
        clamp() {
          return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));
        },
        displayable() {
          return (0 <= this.s && this.s <= 1 || isNaN(this.s))
            && (0 <= this.l && this.l <= 1)
            && (0 <= this.opacity && this.opacity <= 1);
        },
        formatHsl() {
          const a = clampa(this.opacity);
          return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`;
        }
      }));

      function clamph(value) {
        value = (value || 0) % 360;
        return value < 0 ? value + 360 : value;
      }

      function clampt(value) {
        return Math.max(0, Math.min(1, value || 0));
      }

      /* From FvD 13.37, CSS Color Module Level 3 */
      function hsl2rgb(h, m1, m2) {
        return (h < 60 ? m1 + (m2 - m1) * h / 60
          : h < 180 ? m2
            : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60
              : m1) * 255;
      }

      const radians = Math.PI / 180;
      const degrees = 180 / Math.PI;

      // https://observablehq.com/@mbostock/lab-and-rgb
      const K = 18,
        Xn = 0.96422,
        Yn = 1,
        Zn = 0.82521,
        t0$1 = 4 / 29,
        t1$1 = 6 / 29,
        t2 = 3 * t1$1 * t1$1,
        t3 = t1$1 * t1$1 * t1$1;

      function labConvert(o) {
        if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);
        if (o instanceof Hcl) return hcl2lab(o);
        if (!(o instanceof Rgb)) o = rgbConvert(o);
        var r = rgb2lrgb(o.r),
          g = rgb2lrgb(o.g),
          b = rgb2lrgb(o.b),
          y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;
        if (r === g && g === b) x = z = y; else {
          x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);
          z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);
        }
        return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);
      }

      function lab(l, a, b, opacity) {
        return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);
      }

      function Lab(l, a, b, opacity) {
        this.l = +l;
        this.a = +a;
        this.b = +b;
        this.opacity = +opacity;
      }

      define(Lab, lab, extend(Color, {
        brighter(k) {
          return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);
        },
        darker(k) {
          return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);
        },
        rgb() {
          var y = (this.l + 16) / 116,
            x = isNaN(this.a) ? y : y + this.a / 500,
            z = isNaN(this.b) ? y : y - this.b / 200;
          x = Xn * lab2xyz(x);
          y = Yn * lab2xyz(y);
          z = Zn * lab2xyz(z);
          return new Rgb(
            lrgb2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z),
            lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),
            lrgb2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z),
            this.opacity
          );
        }
      }));

      function xyz2lab(t) {
        return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0$1;
      }

      function lab2xyz(t) {
        return t > t1$1 ? t * t * t : t2 * (t - t0$1);
      }

      function lrgb2rgb(x) {
        return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
      }

      function rgb2lrgb(x) {
        return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
      }

      function hclConvert(o) {
        if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);
        if (!(o instanceof Lab)) o = labConvert(o);
        if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);
        var h = Math.atan2(o.b, o.a) * degrees;
        return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);
      }

      function hcl(h, c, l, opacity) {
        return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);
      }

      function Hcl(h, c, l, opacity) {
        this.h = +h;
        this.c = +c;
        this.l = +l;
        this.opacity = +opacity;
      }

      function hcl2lab(o) {
        if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);
        var h = o.h * radians;
        return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);
      }

      define(Hcl, hcl, extend(Color, {
        brighter(k) {
          return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);
        },
        darker(k) {
          return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);
        },
        rgb() {
          return hcl2lab(this).rgb();
        }
      }));

      var A = -0.14861,
        B = +1.78277,
        C = -0.29227,
        D = -0.90649,
        E = +1.97294,
        ED = E * D,
        EB = E * B,
        BC_DA = B * C - D * A;

      function cubehelixConvert(o) {
        if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);
        if (!(o instanceof Rgb)) o = rgbConvert(o);
        var r = o.r / 255,
          g = o.g / 255,
          b = o.b / 255,
          l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),
          bl = b - l,
          k = (E * (g - l) - C * bl) / D,
          s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1
          h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;
        return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);
      }

      function cubehelix$1(h, s, l, opacity) {
        return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);
      }

      function Cubehelix(h, s, l, opacity) {
        this.h = +h;
        this.s = +s;
        this.l = +l;
        this.opacity = +opacity;
      }

      define(Cubehelix, cubehelix$1, extend(Color, {
        brighter(k) {
          k = k == null ? brighter : Math.pow(brighter, k);
          return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
        },
        darker(k) {
          k = k == null ? darker : Math.pow(darker, k);
          return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
        },
        rgb() {
          var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,
            l = +this.l,
            a = isNaN(this.s) ? 0 : this.s * l * (1 - l),
            cosh = Math.cos(h),
            sinh = Math.sin(h);
          return new Rgb(
            255 * (l + a * (A * cosh + B * sinh)),
            255 * (l + a * (C * cosh + D * sinh)),
            255 * (l + a * (E * cosh)),
            this.opacity
          );
        }
      }));

      var constant = x => () => x;

      function linear$1(a, d) {
        return function (t) {
          return a + t * d;
        };
      }

      function exponential(a, b, y) {
        return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {
          return Math.pow(a + t * b, y);
        };
      }

      function hue(a, b) {
        var d = b - a;
        return d ? linear$1(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);
      }

      function gamma(y) {
        return (y = +y) === 1 ? nogamma : function (a, b) {
          return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);
        };
      }

      function nogamma(a, b) {
        var d = b - a;
        return d ? linear$1(a, d) : constant(isNaN(a) ? b : a);
      }

      var rgb = (function rgbGamma(y) {
        var color = gamma(y);

        function rgb(start, end) {
          var r = color((start = rgb$1(start)).r, (end = rgb$1(end)).r),
            g = color(start.g, end.g),
            b = color(start.b, end.b),
            opacity = nogamma(start.opacity, end.opacity);
          return function (t) {
            start.r = r(t);
            start.g = g(t);
            start.b = b(t);
            start.opacity = opacity(t);
            return start + "";
          };
        }

        rgb.gamma = rgbGamma;

        return rgb;
      })(1);

      function numberArray(a, b) {
        if (!b) b = [];
        var n = a ? Math.min(b.length, a.length) : 0,
          c = b.slice(),
          i;
        return function (t) {
          for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;
          return c;
        };
      }

      function isNumberArray(x) {
        return ArrayBuffer.isView(x) && !(x instanceof DataView);
      }

      function genericArray(a, b) {
        var nb = b ? b.length : 0,
          na = a ? Math.min(nb, a.length) : 0,
          x = new Array(na),
          c = new Array(nb),
          i;

        for (i = 0; i < na; ++i) x[i] = interpolate(a[i], b[i]);
        for (; i < nb; ++i) c[i] = b[i];

        return function (t) {
          for (i = 0; i < na; ++i) c[i] = x[i](t);
          return c;
        };
      }

      function date(a, b) {
        var d = new Date;
        return a = +a, b = +b, function (t) {
          return d.setTime(a * (1 - t) + b * t), d;
        };
      }

      function interpolateNumber(a, b) {
        return a = +a, b = +b, function (t) {
          return a * (1 - t) + b * t;
        };
      }

      function object(a, b) {
        var i = {},
          c = {},
          k;

        if (a === null || typeof a !== "object") a = {};
        if (b === null || typeof b !== "object") b = {};

        for (k in b) {
          if (k in a) {
            i[k] = interpolate(a[k], b[k]);
          } else {
            c[k] = b[k];
          }
        }

        return function (t) {
          for (k in i) c[k] = i[k](t);
          return c;
        };
      }

      var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
        reB = new RegExp(reA.source, "g");

      function zero(b) {
        return function () {
          return b;
        };
      }

      function one(b) {
        return function (t) {
          return b(t) + "";
        };
      }

      function string(a, b) {
        var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b
          am, // current match in a
          bm, // current match in b
          bs, // string preceding current number in b, if any
          i = -1, // index in s
          s = [], // string constants and placeholders
          q = []; // number interpolators

        // Coerce inputs to strings.
        a = a + "", b = b + "";

        // Interpolate pairs of numbers in a & b.
        while ((am = reA.exec(a))
          && (bm = reB.exec(b))) {
          if ((bs = bm.index) > bi) { // a string precedes the next number in b
            bs = b.slice(bi, bs);
            if (s[i]) s[i] += bs; // coalesce with previous string
            else s[++i] = bs;
          }
          if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
            if (s[i]) s[i] += bm; // coalesce with previous string
            else s[++i] = bm;
          } else { // interpolate non-matching numbers
            s[++i] = null;
            q.push({ i: i, x: interpolateNumber(am, bm) });
          }
          bi = reB.lastIndex;
        }

        // Add remains of b.
        if (bi < b.length) {
          bs = b.slice(bi);
          if (s[i]) s[i] += bs; // coalesce with previous string
          else s[++i] = bs;
        }

        // Special optimization for only a single match.
        // Otherwise, interpolate each of the numbers and rejoin the string.
        return s.length < 2 ? (q[0]
          ? one(q[0].x)
          : zero(b))
          : (b = q.length, function (t) {
            for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
            return s.join("");
          });
      }

      function interpolate(a, b) {
        var t = typeof b, c;
        return b == null || t === "boolean" ? constant(b)
          : (t === "number" ? interpolateNumber
            : t === "string" ? ((c = color(b)) ? (b = c, rgb) : string)
              : b instanceof color ? rgb
                : b instanceof Date ? date
                  : isNumberArray(b) ? numberArray
                    : Array.isArray(b) ? genericArray
                      : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object
                        : interpolateNumber)(a, b);
      }

      function interpolateRound(a, b) {
        return a = +a, b = +b, function (t) {
          return Math.round(a * (1 - t) + b * t);
        };
      }

      var epsilon2 = 1e-12;

      function cosh(x) {
        return ((x = Math.exp(x)) + 1 / x) / 2;
      }

      function sinh(x) {
        return ((x = Math.exp(x)) - 1 / x) / 2;
      }

      function tanh(x) {
        return ((x = Math.exp(2 * x)) - 1) / (x + 1);
      }

      ((function zoomRho(rho, rho2, rho4) {

        // p0 = [ux0, uy0, w0]
        // p1 = [ux1, uy1, w1]
        function zoom(p0, p1) {
          var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
            ux1 = p1[0], uy1 = p1[1], w1 = p1[2],
            dx = ux1 - ux0,
            dy = uy1 - uy0,
            d2 = dx * dx + dy * dy,
            i,
            S;

          // Special case for u0 ≅ u1.
          if (d2 < epsilon2) {
            S = Math.log(w1 / w0) / rho;
            i = function (t) {
              return [
                ux0 + t * dx,
                uy0 + t * dy,
                w0 * Math.exp(rho * t * S)
              ];
            };
          }

          // General case.
          else {
            var d1 = Math.sqrt(d2),
              b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),
              b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),
              r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
              r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
            S = (r1 - r0) / rho;
            i = function (t) {
              var s = t * S,
                coshr0 = cosh(r0),
                u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));
              return [
                ux0 + u * dx,
                uy0 + u * dy,
                w0 * coshr0 / cosh(rho * s + r0)
              ];
            };
          }

          i.duration = S * 1000 * rho / Math.SQRT2;

          return i;
        }

        zoom.rho = function (_) {
          var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;
          return zoomRho(_1, _2, _4);
        };

        return zoom;
      }))(Math.SQRT2, 2, 4);

      function cubehelix(hue) {
        return (function cubehelixGamma(y) {
          y = +y;

          function cubehelix(start, end) {
            var h = hue((start = cubehelix$1(start)).h, (end = cubehelix$1(end)).h),
              s = nogamma(start.s, end.s),
              l = nogamma(start.l, end.l),
              opacity = nogamma(start.opacity, end.opacity);
            return function (t) {
              start.h = h(t);
              start.s = s(t);
              start.l = l(Math.pow(t, y));
              start.opacity = opacity(t);
              return start + "";
            };
          }

          cubehelix.gamma = cubehelixGamma;

          return cubehelix;
        })(1);
      }

      cubehelix(hue);
      cubehelix(nogamma);

      function constants(x) {
        return function () {
          return x;
        };
      }

      function number(x) {
        return +x;
      }

      var unit = [0, 1];

      function identity$1(x) {
        return x;
      }

      function normalize(a, b) {
        return (b -= (a = +a))
          ? function (x) { return (x - a) / b; }
          : constants(isNaN(b) ? NaN : 0.5);
      }

      function clamper(a, b) {
        var t;
        if (a > b) t = a, a = b, b = t;
        return function (x) { return Math.max(a, Math.min(b, x)); };
      }

      // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
      // interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].
      function bimap(domain, range, interpolate) {
        var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];
        if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);
        else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);
        return function (x) { return r0(d0(x)); };
      }

      function polymap(domain, range, interpolate) {
        var j = Math.min(domain.length, range.length) - 1,
          d = new Array(j),
          r = new Array(j),
          i = -1;

        // Reverse descending domains.
        if (domain[j] < domain[0]) {
          domain = domain.slice().reverse();
          range = range.slice().reverse();
        }

        while (++i < j) {
          d[i] = normalize(domain[i], domain[i + 1]);
          r[i] = interpolate(range[i], range[i + 1]);
        }

        return function (x) {
          var i = bisectRight(domain, x, 1, j) - 1;
          return r[i](d[i](x));
        };
      }

      function copy$1(source, target) {
        return target
          .domain(source.domain())
          .range(source.range())
          .interpolate(source.interpolate())
          .clamp(source.clamp())
          .unknown(source.unknown());
      }

      function transformer$1() {
        var domain = unit,
          range = unit,
          interpolate$1 = interpolate,
          transform,
          untransform,
          unknown,
          clamp = identity$1,
          piecewise,
          output,
          input;

        function rescale() {
          var n = Math.min(domain.length, range.length);
          if (clamp !== identity$1) clamp = clamper(domain[0], domain[n - 1]);
          piecewise = n > 2 ? polymap : bimap;
          output = input = null;
          return scale;
        }

        function scale(x) {
          return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate$1)))(transform(clamp(x)));
        }

        scale.invert = function (y) {
          return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));
        };

        scale.domain = function (_) {
          return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();
        };

        scale.range = function (_) {
          return arguments.length ? (range = Array.from(_), rescale()) : range.slice();
        };

        scale.rangeRound = function (_) {
          return range = Array.from(_), interpolate$1 = interpolateRound, rescale();
        };

        scale.clamp = function (_) {
          return arguments.length ? (clamp = _ ? true : identity$1, rescale()) : clamp !== identity$1;
        };

        scale.interpolate = function (_) {
          return arguments.length ? (interpolate$1 = _, rescale()) : interpolate$1;
        };

        scale.unknown = function (_) {
          return arguments.length ? (unknown = _, scale) : unknown;
        };

        return function (t, u) {
          transform = t, untransform = u;
          return rescale();
        };
      }

      function continuous() {
        return transformer$1()(identity$1, identity$1);
      }

      function formatDecimal(x) {
        return Math.abs(x = Math.round(x)) >= 1e21
          ? x.toLocaleString("en").replace(/,/g, "")
          : x.toString(10);
      }

      // Computes the decimal coefficient and exponent of the specified number x with
      // significant digits p, where x is positive and p is in [1, 21] or undefined.
      // For example, formatDecimalParts(1.23) returns ["123", 0].
      function formatDecimalParts(x, p) {
        if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity
        var i, coefficient = x.slice(0, i);

        // The string returned by toExponential either has the form \d\.\d+e[-+]\d+
        // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3).
        return [
          coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
          +x.slice(i + 1)
        ];
      }

      function exponent(x) {
        return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;
      }

      function formatGroup(grouping, thousands) {
        return function (value, width) {
          var i = value.length,
            t = [],
            j = 0,
            g = grouping[0],
            length = 0;

          while (i > 0 && g > 0) {
            if (length + g + 1 > width) g = Math.max(1, width - length);
            t.push(value.substring(i -= g, i + g));
            if ((length += g + 1) > width) break;
            g = grouping[j = (j + 1) % grouping.length];
          }

          return t.reverse().join(thousands);
        };
      }

      function formatNumerals(numerals) {
        return function (value) {
          return value.replace(/[0-9]/g, function (i) {
            return numerals[+i];
          });
        };
      }

      // [[fill]align][sign][symbol][0][width][,][.precision][~][type]
      var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;

      function formatSpecifier(specifier) {
        if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
        var match;
        return new FormatSpecifier({
          fill: match[1],
          align: match[2],
          sign: match[3],
          symbol: match[4],
          zero: match[5],
          width: match[6],
          comma: match[7],
          precision: match[8] && match[8].slice(1),
          trim: match[9],
          type: match[10]
        });
      }

      formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof

      function FormatSpecifier(specifier) {
        this.fill = specifier.fill === undefined ? " " : specifier.fill + "";
        this.align = specifier.align === undefined ? ">" : specifier.align + "";
        this.sign = specifier.sign === undefined ? "-" : specifier.sign + "";
        this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + "";
        this.zero = !!specifier.zero;
        this.width = specifier.width === undefined ? undefined : +specifier.width;
        this.comma = !!specifier.comma;
        this.precision = specifier.precision === undefined ? undefined : +specifier.precision;
        this.trim = !!specifier.trim;
        this.type = specifier.type === undefined ? "" : specifier.type + "";
      }

      FormatSpecifier.prototype.toString = function () {
        return this.fill
          + this.align
          + this.sign
          + this.symbol
          + (this.zero ? "0" : "")
          + (this.width === undefined ? "" : Math.max(1, this.width | 0))
          + (this.comma ? "," : "")
          + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0))
          + (this.trim ? "~" : "")
          + this.type;
      };

      // Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.
      function formatTrim(s) {
        out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {
          switch (s[i]) {
            case ".": i0 = i1 = i; break;
            case "0": if (i0 === 0) i0 = i; i1 = i; break;
            default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;
          }
        }
        return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;
      }

      var prefixExponent;

      function formatPrefixAuto(x, p) {
        var d = formatDecimalParts(x, p);
        if (!d) return x + "";
        var coefficient = d[0],
          exponent = d[1],
          i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,
          n = coefficient.length;
        return i === n ? coefficient
          : i > n ? coefficient + new Array(i - n + 1).join("0")
            : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i)
              : "0." + new Array(1 - i).join("0") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!
      }

      function formatRounded(x, p) {
        var d = formatDecimalParts(x, p);
        if (!d) return x + "";
        var coefficient = d[0],
          exponent = d[1];
        return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient
          : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1)
            : coefficient + new Array(exponent - coefficient.length + 2).join("0");
      }

      var formatTypes = {
        "%": (x, p) => (x * 100).toFixed(p),
        "b": (x) => Math.round(x).toString(2),
        "c": (x) => x + "",
        "d": formatDecimal,
        "e": (x, p) => x.toExponential(p),
        "f": (x, p) => x.toFixed(p),
        "g": (x, p) => x.toPrecision(p),
        "o": (x) => Math.round(x).toString(8),
        "p": (x, p) => formatRounded(x * 100, p),
        "r": formatRounded,
        "s": formatPrefixAuto,
        "X": (x) => Math.round(x).toString(16).toUpperCase(),
        "x": (x) => Math.round(x).toString(16)
      };

      function identity(x) {
        return x;
      }

      var map = Array.prototype.map,
        prefixes = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];

      function formatLocale$1(locale) {
        var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + ""),
          currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "",
          currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "",
          decimal = locale.decimal === undefined ? "." : locale.decimal + "",
          numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),
          percent = locale.percent === undefined ? "%" : locale.percent + "",
          minus = locale.minus === undefined ? "−" : locale.minus + "",
          nan = locale.nan === undefined ? "NaN" : locale.nan + "";

        function newFormat(specifier) {
          specifier = formatSpecifier(specifier);

          var fill = specifier.fill,
            align = specifier.align,
            sign = specifier.sign,
            symbol = specifier.symbol,
            zero = specifier.zero,
            width = specifier.width,
            comma = specifier.comma,
            precision = specifier.precision,
            trim = specifier.trim,
            type = specifier.type;

          // The "n" type is an alias for ",g".
          if (type === "n") comma = true, type = "g";

          // The "" type, and any invalid type, is an alias for ".12~g".
          else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g";

          // If zero fill is specified, padding goes after sign and before digits.
          if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "=";

          // Compute the prefix and suffix.
          // For SI-prefix, the suffix is lazily computed.
          var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
            suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : "";

          // What format function should we use?
          // Is this an integer type?
          // Can this type generate exponential notation?
          var formatType = formatTypes[type],
            maybeSuffix = /[defgprs%]/.test(type);

          // Set the default precision if not specified,
          // or clamp the specified precision to the supported range.
          // For significant precision, it must be in [1, 21].
          // For fixed precision, it must be in [0, 20].
          precision = precision === undefined ? 6
            : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))
              : Math.max(0, Math.min(20, precision));

          function format(value) {
            var valuePrefix = prefix,
              valueSuffix = suffix,
              i, n, c;

            if (type === "c") {
              valueSuffix = formatType(value) + valueSuffix;
              value = "";
            } else {
              value = +value;

              // Determine the sign. -0 is not less than 0, but 1 / -0 is!
              var valueNegative = value < 0 || 1 / value < 0;

              // Perform the initial formatting.
              value = isNaN(value) ? nan : formatType(Math.abs(value), precision);

              // Trim insignificant zeros.
              if (trim) value = formatTrim(value);

              // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.
              if (valueNegative && +value === 0 && sign !== "+") valueNegative = false;

              // Compute the prefix and suffix.
              valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
              valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");

              // Break the formatted value into the integer “value” part that can be
              // grouped, and fractional or exponential “suffix” part that is not.
              if (maybeSuffix) {
                i = -1, n = value.length;
                while (++i < n) {
                  if (c = value.charCodeAt(i), 48 > c || c > 57) {
                    valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;
                    value = value.slice(0, i);
                    break;
                  }
                }
              }
            }

            // If the fill character is not "0", grouping is applied before padding.
            if (comma && !zero) value = group(value, Infinity);

            // Compute the padding.
            var length = valuePrefix.length + value.length + valueSuffix.length,
              padding = length < width ? new Array(width - length + 1).join(fill) : "";

            // If the fill character is "0", grouping is applied after padding.
            if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = "";

            // Reconstruct the final output based on the desired alignment.
            switch (align) {
              case "<": value = valuePrefix + value + valueSuffix + padding; break;
              case "=": value = valuePrefix + padding + value + valueSuffix; break;
              case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;
              default: value = padding + valuePrefix + value + valueSuffix; break;
            }

            return numerals(value);
          }

          format.toString = function () {
            return specifier + "";
          };

          return format;
        }

        function formatPrefix(specifier, value) {
          var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)),
            e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,
            k = Math.pow(10, -e),
            prefix = prefixes[8 + e / 3];
          return function (value) {
            return f(k * value) + prefix;
          };
        }

        return {
          format: newFormat,
          formatPrefix: formatPrefix
        };
      }

      var locale$1;
      var format;
      var formatPrefix;

      defaultLocale$1({
        thousands: ",",
        grouping: [3],
        currency: ["$", ""]
      });

      function defaultLocale$1(definition) {
        locale$1 = formatLocale$1(definition);
        format = locale$1.format;
        formatPrefix = locale$1.formatPrefix;
        return locale$1;
      }

      function precisionFixed(step) {
        return Math.max(0, -exponent(Math.abs(step)));
      }

      function precisionPrefix(step, value) {
        return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));
      }

      function precisionRound(step, max) {
        step = Math.abs(step), max = Math.abs(max) - step;
        return Math.max(0, exponent(max) - exponent(step)) + 1;
      }

      function tickFormat(start, stop, count, specifier) {
        var step = tickStep(start, stop, count),
          precision;
        specifier = formatSpecifier(specifier == null ? ",f" : specifier);
        switch (specifier.type) {
          case "s": {
            var value = Math.max(Math.abs(start), Math.abs(stop));
            if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;
            return formatPrefix(specifier, value);
          }
          case "":
          case "e":
          case "g":
          case "p":
          case "r": {
            if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e");
            break;
          }
          case "f":
          case "%": {
            if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2;
            break;
          }
        }
        return format(specifier);
      }

      function linearish(scale) {
        var domain = scale.domain;

        scale.ticks = function (count) {
          var d = domain();
          return ticks(d[0], d[d.length - 1], count == null ? 10 : count);
        };

        scale.tickFormat = function (count, specifier) {
          var d = domain();
          return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);
        };

        scale.nice = function (count) {
          if (count == null) count = 10;

          var d = domain();
          var i0 = 0;
          var i1 = d.length - 1;
          var start = d[i0];
          var stop = d[i1];
          var prestep;
          var step;
          var maxIter = 10;

          if (stop < start) {
            step = start, start = stop, stop = step;
            step = i0, i0 = i1, i1 = step;
          }

          while (maxIter-- > 0) {
            step = tickIncrement(start, stop, count);
            if (step === prestep) {
              d[i0] = start;
              d[i1] = stop;
              return domain(d);
            } else if (step > 0) {
              start = Math.floor(start / step) * step;
              stop = Math.ceil(stop / step) * step;
            } else if (step < 0) {
              start = Math.ceil(start * step) / step;
              stop = Math.floor(stop * step) / step;
            } else {
              break;
            }
            prestep = step;
          }

          return scale;
        };

        return scale;
      }

      function linear() {
        var scale = continuous();

        scale.copy = function () {
          return copy$1(scale, linear());
        };

        initRange.apply(scale, arguments);

        return linearish(scale);
      }

      const t0 = new Date, t1 = new Date;

      function timeInterval(floori, offseti, count, field) {

        function interval(date) {
          return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;
        }

        interval.floor = (date) => {
          return floori(date = new Date(+date)), date;
        };

        interval.ceil = (date) => {
          return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;
        };

        interval.round = (date) => {
          const d0 = interval(date), d1 = interval.ceil(date);
          return date - d0 < d1 - date ? d0 : d1;
        };

        interval.offset = (date, step) => {
          return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;
        };

        interval.range = (start, stop, step) => {
          const range = [];
          start = interval.ceil(start);
          step = step == null ? 1 : Math.floor(step);
          if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date
          let previous;
          do range.push(previous = new Date(+start)), offseti(start, step), floori(start);
          while (previous < start && start < stop);
          return range;
        };

        interval.filter = (test) => {
          return timeInterval((date) => {
            if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);
          }, (date, step) => {
            if (date >= date) {
              if (step < 0) while (++step <= 0) {
                while (offseti(date, -1), !test(date)) { } // eslint-disable-line no-empty
              } else while (--step >= 0) {
                while (offseti(date, +1), !test(date)) { } // eslint-disable-line no-empty
              }
            }
          });
        };

        if (count) {
          interval.count = (start, end) => {
            t0.setTime(+start), t1.setTime(+end);
            floori(t0), floori(t1);
            return Math.floor(count(t0, t1));
          };

          interval.every = (step) => {
            step = Math.floor(step);
            return !isFinite(step) || !(step > 0) ? null
              : !(step > 1) ? interval
                : interval.filter(field
                  ? (d) => field(d) % step === 0
                  : (d) => interval.count(0, d) % step === 0);
          };
        }

        return interval;
      }

      const millisecond = timeInterval(() => {
        // noop
      }, (date, step) => {
        date.setTime(+date + step);
      }, (start, end) => {
        return end - start;
      });

      // An optimized implementation for this simple case.
      millisecond.every = (k) => {
        k = Math.floor(k);
        if (!isFinite(k) || !(k > 0)) return null;
        if (!(k > 1)) return millisecond;
        return timeInterval((date) => {
          date.setTime(Math.floor(date / k) * k);
        }, (date, step) => {
          date.setTime(+date + step * k);
        }, (start, end) => {
          return (end - start) / k;
        });
      };

      millisecond.range;

      const durationSecond = 1000;
      const durationMinute = durationSecond * 60;
      const durationHour = durationMinute * 60;
      const durationDay = durationHour * 24;
      const durationWeek = durationDay * 7;

      const second = timeInterval((date) => {
        date.setTime(date - date.getMilliseconds());
      }, (date, step) => {
        date.setTime(+date + step * durationSecond);
      }, (start, end) => {
        return (end - start) / durationSecond;
      }, (date) => {
        return date.getUTCSeconds();
      });

      second.range;

      const timeMinute = timeInterval((date) => {
        date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);
      }, (date, step) => {
        date.setTime(+date + step * durationMinute);
      }, (start, end) => {
        return (end - start) / durationMinute;
      }, (date) => {
        return date.getMinutes();
      });

      timeMinute.range;

      const utcMinute = timeInterval((date) => {
        date.setUTCSeconds(0, 0);
      }, (date, step) => {
        date.setTime(+date + step * durationMinute);
      }, (start, end) => {
        return (end - start) / durationMinute;
      }, (date) => {
        return date.getUTCMinutes();
      });

      utcMinute.range;

      const timeHour = timeInterval((date) => {
        date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);
      }, (date, step) => {
        date.setTime(+date + step * durationHour);
      }, (start, end) => {
        return (end - start) / durationHour;
      }, (date) => {
        return date.getHours();
      });

      timeHour.range;

      const utcHour = timeInterval((date) => {
        date.setUTCMinutes(0, 0, 0);
      }, (date, step) => {
        date.setTime(+date + step * durationHour);
      }, (start, end) => {
        return (end - start) / durationHour;
      }, (date) => {
        return date.getUTCHours();
      });

      utcHour.range;

      const timeDay = timeInterval(
        date => date.setHours(0, 0, 0, 0),
        (date, step) => date.setDate(date.getDate() + step),
        (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,
        date => date.getDate() - 1
      );

      timeDay.range;

      const utcDay = timeInterval((date) => {
        date.setUTCHours(0, 0, 0, 0);
      }, (date, step) => {
        date.setUTCDate(date.getUTCDate() + step);
      }, (start, end) => {
        return (end - start) / durationDay;
      }, (date) => {
        return date.getUTCDate() - 1;
      });

      utcDay.range;

      const unixDay = timeInterval((date) => {
        date.setUTCHours(0, 0, 0, 0);
      }, (date, step) => {
        date.setUTCDate(date.getUTCDate() + step);
      }, (start, end) => {
        return (end - start) / durationDay;
      }, (date) => {
        return Math.floor(date / durationDay);
      });

      unixDay.range;

      function timeWeekday(i) {
        return timeInterval((date) => {
          date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);
          date.setHours(0, 0, 0, 0);
        }, (date, step) => {
          date.setDate(date.getDate() + step * 7);
        }, (start, end) => {
          return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;
        });
      }

      const timeSunday = timeWeekday(0);
      const timeMonday = timeWeekday(1);
      const timeTuesday = timeWeekday(2);
      const timeWednesday = timeWeekday(3);
      const timeThursday = timeWeekday(4);
      const timeFriday = timeWeekday(5);
      const timeSaturday = timeWeekday(6);

      timeSunday.range;
      timeMonday.range;
      timeTuesday.range;
      timeWednesday.range;
      timeThursday.range;
      timeFriday.range;
      timeSaturday.range;

      function utcWeekday(i) {
        return timeInterval((date) => {
          date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);
          date.setUTCHours(0, 0, 0, 0);
        }, (date, step) => {
          date.setUTCDate(date.getUTCDate() + step * 7);
        }, (start, end) => {
          return (end - start) / durationWeek;
        });
      }

      const utcSunday = utcWeekday(0);
      const utcMonday = utcWeekday(1);
      const utcTuesday = utcWeekday(2);
      const utcWednesday = utcWeekday(3);
      const utcThursday = utcWeekday(4);
      const utcFriday = utcWeekday(5);
      const utcSaturday = utcWeekday(6);

      utcSunday.range;
      utcMonday.range;
      utcTuesday.range;
      utcWednesday.range;
      utcThursday.range;
      utcFriday.range;
      utcSaturday.range;

      const timeMonth = timeInterval((date) => {
        date.setDate(1);
        date.setHours(0, 0, 0, 0);
      }, (date, step) => {
        date.setMonth(date.getMonth() + step);
      }, (start, end) => {
        return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;
      }, (date) => {
        return date.getMonth();
      });

      timeMonth.range;

      const utcMonth = timeInterval((date) => {
        date.setUTCDate(1);
        date.setUTCHours(0, 0, 0, 0);
      }, (date, step) => {
        date.setUTCMonth(date.getUTCMonth() + step);
      }, (start, end) => {
        return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;
      }, (date) => {
        return date.getUTCMonth();
      });

      utcMonth.range;

      const timeYear = timeInterval((date) => {
        date.setMonth(0, 1);
        date.setHours(0, 0, 0, 0);
      }, (date, step) => {
        date.setFullYear(date.getFullYear() + step);
      }, (start, end) => {
        return end.getFullYear() - start.getFullYear();
      }, (date) => {
        return date.getFullYear();
      });

      // An optimized implementation for this simple case.
      timeYear.every = (k) => {
        return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {
          date.setFullYear(Math.floor(date.getFullYear() / k) * k);
          date.setMonth(0, 1);
          date.setHours(0, 0, 0, 0);
        }, (date, step) => {
          date.setFullYear(date.getFullYear() + step * k);
        });
      };

      timeYear.range;

      const utcYear = timeInterval((date) => {
        date.setUTCMonth(0, 1);
        date.setUTCHours(0, 0, 0, 0);
      }, (date, step) => {
        date.setUTCFullYear(date.getUTCFullYear() + step);
      }, (start, end) => {
        return end.getUTCFullYear() - start.getUTCFullYear();
      }, (date) => {
        return date.getUTCFullYear();
      });

      // An optimized implementation for this simple case.
      utcYear.every = (k) => {
        return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {
          date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);
          date.setUTCMonth(0, 1);
          date.setUTCHours(0, 0, 0, 0);
        }, (date, step) => {
          date.setUTCFullYear(date.getUTCFullYear() + step * k);
        });
      };

      utcYear.range;

      function localDate(d) {
        if (0 <= d.y && d.y < 100) {
          var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);
          date.setFullYear(d.y);
          return date;
        }
        return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);
      }

      function utcDate(d) {
        if (0 <= d.y && d.y < 100) {
          var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));
          date.setUTCFullYear(d.y);
          return date;
        }
        return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));
      }

      function newDate(y, m, d) {
        return { y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0 };
      }

      function formatLocale(locale) {
        var locale_dateTime = locale.dateTime,
          locale_date = locale.date,
          locale_time = locale.time,
          locale_periods = locale.periods,
          locale_weekdays = locale.days,
          locale_shortWeekdays = locale.shortDays,
          locale_months = locale.months,
          locale_shortMonths = locale.shortMonths;

        var periodRe = formatRe(locale_periods),
          periodLookup = formatLookup(locale_periods),
          weekdayRe = formatRe(locale_weekdays),
          weekdayLookup = formatLookup(locale_weekdays),
          shortWeekdayRe = formatRe(locale_shortWeekdays),
          shortWeekdayLookup = formatLookup(locale_shortWeekdays),
          monthRe = formatRe(locale_months),
          monthLookup = formatLookup(locale_months),
          shortMonthRe = formatRe(locale_shortMonths),
          shortMonthLookup = formatLookup(locale_shortMonths);

        var formats = {
          "a": formatShortWeekday,
          "A": formatWeekday,
          "b": formatShortMonth,
          "B": formatMonth,
          "c": null,
          "d": formatDayOfMonth,
          "e": formatDayOfMonth,
          "f": formatMicroseconds,
          "g": formatYearISO,
          "G": formatFullYearISO,
          "H": formatHour24,
          "I": formatHour12,
          "j": formatDayOfYear,
          "L": formatMilliseconds,
          "m": formatMonthNumber,
          "M": formatMinutes,
          "p": formatPeriod,
          "q": formatQuarter,
          "Q": formatUnixTimestamp,
          "s": formatUnixTimestampSeconds,
          "S": formatSeconds,
          "u": formatWeekdayNumberMonday,
          "U": formatWeekNumberSunday,
          "V": formatWeekNumberISO,
          "w": formatWeekdayNumberSunday,
          "W": formatWeekNumberMonday,
          "x": null,
          "X": null,
          "y": formatYear,
          "Y": formatFullYear,
          "Z": formatZone,
          "%": formatLiteralPercent
        };

        var utcFormats = {
          "a": formatUTCShortWeekday,
          "A": formatUTCWeekday,
          "b": formatUTCShortMonth,
          "B": formatUTCMonth,
          "c": null,
          "d": formatUTCDayOfMonth,
          "e": formatUTCDayOfMonth,
          "f": formatUTCMicroseconds,
          "g": formatUTCYearISO,
          "G": formatUTCFullYearISO,
          "H": formatUTCHour24,
          "I": formatUTCHour12,
          "j": formatUTCDayOfYear,
          "L": formatUTCMilliseconds,
          "m": formatUTCMonthNumber,
          "M": formatUTCMinutes,
          "p": formatUTCPeriod,
          "q": formatUTCQuarter,
          "Q": formatUnixTimestamp,
          "s": formatUnixTimestampSeconds,
          "S": formatUTCSeconds,
          "u": formatUTCWeekdayNumberMonday,
          "U": formatUTCWeekNumberSunday,
          "V": formatUTCWeekNumberISO,
          "w": formatUTCWeekdayNumberSunday,
          "W": formatUTCWeekNumberMonday,
          "x": null,
          "X": null,
          "y": formatUTCYear,
          "Y": formatUTCFullYear,
          "Z": formatUTCZone,
          "%": formatLiteralPercent
        };

        var parses = {
          "a": parseShortWeekday,
          "A": parseWeekday,
          "b": parseShortMonth,
          "B": parseMonth,
          "c": parseLocaleDateTime,
          "d": parseDayOfMonth,
          "e": parseDayOfMonth,
          "f": parseMicroseconds,
          "g": parseYear,
          "G": parseFullYear,
          "H": parseHour24,
          "I": parseHour24,
          "j": parseDayOfYear,
          "L": parseMilliseconds,
          "m": parseMonthNumber,
          "M": parseMinutes,
          "p": parsePeriod,
          "q": parseQuarter,
          "Q": parseUnixTimestamp,
          "s": parseUnixTimestampSeconds,
          "S": parseSeconds,
          "u": parseWeekdayNumberMonday,
          "U": parseWeekNumberSunday,
          "V": parseWeekNumberISO,
          "w": parseWeekdayNumberSunday,
          "W": parseWeekNumberMonday,
          "x": parseLocaleDate,
          "X": parseLocaleTime,
          "y": parseYear,
          "Y": parseFullYear,
          "Z": parseZone,
          "%": parseLiteralPercent
        };

        // These recursive directive definitions must be deferred.
        formats.x = newFormat(locale_date, formats);
        formats.X = newFormat(locale_time, formats);
        formats.c = newFormat(locale_dateTime, formats);
        utcFormats.x = newFormat(locale_date, utcFormats);
        utcFormats.X = newFormat(locale_time, utcFormats);
        utcFormats.c = newFormat(locale_dateTime, utcFormats);

        function newFormat(specifier, formats) {
          return function (date) {
            var string = [],
              i = -1,
              j = 0,
              n = specifier.length,
              c,
              pad,
              format;

            if (!(date instanceof Date)) date = new Date(+date);

            while (++i < n) {
              if (specifier.charCodeAt(i) === 37) {
                string.push(specifier.slice(j, i));
                if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);
                else pad = c === "e" ? " " : "0";
                if (format = formats[c]) c = format(date, pad);
                string.push(c);
                j = i + 1;
              }
            }

            string.push(specifier.slice(j, i));
            return string.join("");
          };
        }

        function newParse(specifier, Z) {
          return function (string) {
            var d = newDate(1900, undefined, 1),
              i = parseSpecifier(d, specifier, string += "", 0),
              week, day;
            if (i != string.length) return null;

            // If a UNIX timestamp is specified, return it.
            if ("Q" in d) return new Date(d.Q);
            if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0));

            // If this is utcParse, never use the local timezone.
            if (Z && !("Z" in d)) d.Z = 0;

            // The am-pm flag is 0 for AM, and 1 for PM.
            if ("p" in d) d.H = d.H % 12 + d.p * 12;

            // If the month was not specified, inherit from the quarter.
            if (d.m === undefined) d.m = "q" in d ? d.q : 0;

            // Convert day-of-week and week-of-year to day-of-year.
            if ("V" in d) {
              if (d.V < 1 || d.V > 53) return null;
              if (!("w" in d)) d.w = 1;
              if ("Z" in d) {
                week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();
                week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);
                week = utcDay.offset(week, (d.V - 1) * 7);
                d.y = week.getUTCFullYear();
                d.m = week.getUTCMonth();
                d.d = week.getUTCDate() + (d.w + 6) % 7;
              } else {
                week = localDate(newDate(d.y, 0, 1)), day = week.getDay();
                week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);
                week = timeDay.offset(week, (d.V - 1) * 7);
                d.y = week.getFullYear();
                d.m = week.getMonth();
                d.d = week.getDate() + (d.w + 6) % 7;
              }
            } else if ("W" in d || "U" in d) {
              if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0;
              day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();
              d.m = 0;
              d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;
            }

            // If a time zone is specified, all fields are interpreted as UTC and then
            // offset according to the specified time zone.
            if ("Z" in d) {
              d.H += d.Z / 100 | 0;
              d.M += d.Z % 100;
              return utcDate(d);
            }

            // Otherwise, all fields are in local time.
            return localDate(d);
          };
        }

        function parseSpecifier(d, specifier, string, j) {
          var i = 0,
            n = specifier.length,
            m = string.length,
            c,
            parse;

          while (i < n) {
            if (j >= m) return -1;
            c = specifier.charCodeAt(i++);
            if (c === 37) {
              c = specifier.charAt(i++);
              parse = parses[c in pads ? specifier.charAt(i++) : c];
              if (!parse || ((j = parse(d, string, j)) < 0)) return -1;
            } else if (c != string.charCodeAt(j++)) {
              return -1;
            }
          }

          return j;
        }

        function parsePeriod(d, string, i) {
          var n = periodRe.exec(string.slice(i));
          return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
        }

        function parseShortWeekday(d, string, i) {
          var n = shortWeekdayRe.exec(string.slice(i));
          return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
        }

        function parseWeekday(d, string, i) {
          var n = weekdayRe.exec(string.slice(i));
          return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
        }

        function parseShortMonth(d, string, i) {
          var n = shortMonthRe.exec(string.slice(i));
          return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
        }

        function parseMonth(d, string, i) {
          var n = monthRe.exec(string.slice(i));
          return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
        }

        function parseLocaleDateTime(d, string, i) {
          return parseSpecifier(d, locale_dateTime, string, i);
        }

        function parseLocaleDate(d, string, i) {
          return parseSpecifier(d, locale_date, string, i);
        }

        function parseLocaleTime(d, string, i) {
          return parseSpecifier(d, locale_time, string, i);
        }

        function formatShortWeekday(d) {
          return locale_shortWeekdays[d.getDay()];
        }

        function formatWeekday(d) {
          return locale_weekdays[d.getDay()];
        }

        function formatShortMonth(d) {
          return locale_shortMonths[d.getMonth()];
        }

        function formatMonth(d) {
          return locale_months[d.getMonth()];
        }

        function formatPeriod(d) {
          return locale_periods[+(d.getHours() >= 12)];
        }

        function formatQuarter(d) {
          return 1 + ~~(d.getMonth() / 3);
        }

        function formatUTCShortWeekday(d) {
          return locale_shortWeekdays[d.getUTCDay()];
        }

        function formatUTCWeekday(d) {
          return locale_weekdays[d.getUTCDay()];
        }

        function formatUTCShortMonth(d) {
          return locale_shortMonths[d.getUTCMonth()];
        }

        function formatUTCMonth(d) {
          return locale_months[d.getUTCMonth()];
        }

        function formatUTCPeriod(d) {
          return locale_periods[+(d.getUTCHours() >= 12)];
        }

        function formatUTCQuarter(d) {
          return 1 + ~~(d.getUTCMonth() / 3);
        }

        return {
          format: function (specifier) {
            var f = newFormat(specifier += "", formats);
            f.toString = function () { return specifier; };
            return f;
          },
          parse: function (specifier) {
            var p = newParse(specifier += "", false);
            p.toString = function () { return specifier; };
            return p;
          },
          utcFormat: function (specifier) {
            var f = newFormat(specifier += "", utcFormats);
            f.toString = function () { return specifier; };
            return f;
          },
          utcParse: function (specifier) {
            var p = newParse(specifier += "", true);
            p.toString = function () { return specifier; };
            return p;
          }
        };
      }

      var pads = { "-": "", "_": " ", "0": "0" },
        numberRe = /^\s*\d+/, // note: ignores next directive
        percentRe = /^%/,
        requoteRe = /[\\^$*+?|[\]().{}]/g;

      function pad(value, fill, width) {
        var sign = value < 0 ? "-" : "",
          string = (sign ? -value : value) + "",
          length = string.length;
        return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
      }

      function requote(s) {
        return s.replace(requoteRe, "\\$&");
      }

      function formatRe(names) {
        return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i");
      }

      function formatLookup(names) {
        return new Map(names.map((name, i) => [name.toLowerCase(), i]));
      }

      function parseWeekdayNumberSunday(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 1));
        return n ? (d.w = +n[0], i + n[0].length) : -1;
      }

      function parseWeekdayNumberMonday(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 1));
        return n ? (d.u = +n[0], i + n[0].length) : -1;
      }

      function parseWeekNumberSunday(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.U = +n[0], i + n[0].length) : -1;
      }

      function parseWeekNumberISO(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.V = +n[0], i + n[0].length) : -1;
      }

      function parseWeekNumberMonday(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.W = +n[0], i + n[0].length) : -1;
      }

      function parseFullYear(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 4));
        return n ? (d.y = +n[0], i + n[0].length) : -1;
      }

      function parseYear(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;
      }

      function parseZone(d, string, i) {
        var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6));
        return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1;
      }

      function parseQuarter(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 1));
        return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;
      }

      function parseMonthNumber(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.m = n[0] - 1, i + n[0].length) : -1;
      }

      function parseDayOfMonth(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.d = +n[0], i + n[0].length) : -1;
      }

      function parseDayOfYear(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 3));
        return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;
      }

      function parseHour24(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.H = +n[0], i + n[0].length) : -1;
      }

      function parseMinutes(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.M = +n[0], i + n[0].length) : -1;
      }

      function parseSeconds(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 2));
        return n ? (d.S = +n[0], i + n[0].length) : -1;
      }

      function parseMilliseconds(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 3));
        return n ? (d.L = +n[0], i + n[0].length) : -1;
      }

      function parseMicroseconds(d, string, i) {
        var n = numberRe.exec(string.slice(i, i + 6));
        return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;
      }

      function parseLiteralPercent(d, string, i) {
        var n = percentRe.exec(string.slice(i, i + 1));
        return n ? i + n[0].length : -1;
      }

      function parseUnixTimestamp(d, string, i) {
        var n = numberRe.exec(string.slice(i));
        return n ? (d.Q = +n[0], i + n[0].length) : -1;
      }

      function parseUnixTimestampSeconds(d, string, i) {
        var n = numberRe.exec(string.slice(i));
        return n ? (d.s = +n[0], i + n[0].length) : -1;
      }

      function formatDayOfMonth(d, p) {
        return pad(d.getDate(), p, 2);
      }

      function formatHour24(d, p) {
        return pad(d.getHours(), p, 2);
      }

      function formatHour12(d, p) {
        return pad(d.getHours() % 12 || 12, p, 2);
      }

      function formatDayOfYear(d, p) {
        return pad(1 + timeDay.count(timeYear(d), d), p, 3);
      }

      function formatMilliseconds(d, p) {
        return pad(d.getMilliseconds(), p, 3);
      }

      function formatMicroseconds(d, p) {
        return formatMilliseconds(d, p) + "000";
      }

      function formatMonthNumber(d, p) {
        return pad(d.getMonth() + 1, p, 2);
      }

      function formatMinutes(d, p) {
        return pad(d.getMinutes(), p, 2);
      }

      function formatSeconds(d, p) {
        return pad(d.getSeconds(), p, 2);
      }

      function formatWeekdayNumberMonday(d) {
        var day = d.getDay();
        return day === 0 ? 7 : day;
      }

      function formatWeekNumberSunday(d, p) {
        return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);
      }

      function dISO(d) {
        var day = d.getDay();
        return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);
      }

      function formatWeekNumberISO(d, p) {
        d = dISO(d);
        return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);
      }

      function formatWeekdayNumberSunday(d) {
        return d.getDay();
      }

      function formatWeekNumberMonday(d, p) {
        return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);
      }

      function formatYear(d, p) {
        return pad(d.getFullYear() % 100, p, 2);
      }

      function formatYearISO(d, p) {
        d = dISO(d);
        return pad(d.getFullYear() % 100, p, 2);
      }

      function formatFullYear(d, p) {
        return pad(d.getFullYear() % 10000, p, 4);
      }

      function formatFullYearISO(d, p) {
        var day = d.getDay();
        d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);
        return pad(d.getFullYear() % 10000, p, 4);
      }

      function formatZone(d) {
        var z = d.getTimezoneOffset();
        return (z > 0 ? "-" : (z *= -1, "+"))
          + pad(z / 60 | 0, "0", 2)
          + pad(z % 60, "0", 2);
      }

      function formatUTCDayOfMonth(d, p) {
        return pad(d.getUTCDate(), p, 2);
      }

      function formatUTCHour24(d, p) {
        return pad(d.getUTCHours(), p, 2);
      }

      function formatUTCHour12(d, p) {
        return pad(d.getUTCHours() % 12 || 12, p, 2);
      }

      function formatUTCDayOfYear(d, p) {
        return pad(1 + utcDay.count(utcYear(d), d), p, 3);
      }

      function formatUTCMilliseconds(d, p) {
        return pad(d.getUTCMilliseconds(), p, 3);
      }

      function formatUTCMicroseconds(d, p) {
        return formatUTCMilliseconds(d, p) + "000";
      }

      function formatUTCMonthNumber(d, p) {
        return pad(d.getUTCMonth() + 1, p, 2);
      }

      function formatUTCMinutes(d, p) {
        return pad(d.getUTCMinutes(), p, 2);
      }

      function formatUTCSeconds(d, p) {
        return pad(d.getUTCSeconds(), p, 2);
      }

      function formatUTCWeekdayNumberMonday(d) {
        var dow = d.getUTCDay();
        return dow === 0 ? 7 : dow;
      }

      function formatUTCWeekNumberSunday(d, p) {
        return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);
      }

      function UTCdISO(d) {
        var day = d.getUTCDay();
        return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);
      }

      function formatUTCWeekNumberISO(d, p) {
        d = UTCdISO(d);
        return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);
      }

      function formatUTCWeekdayNumberSunday(d) {
        return d.getUTCDay();
      }

      function formatUTCWeekNumberMonday(d, p) {
        return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);
      }

      function formatUTCYear(d, p) {
        return pad(d.getUTCFullYear() % 100, p, 2);
      }

      function formatUTCYearISO(d, p) {
        d = UTCdISO(d);
        return pad(d.getUTCFullYear() % 100, p, 2);
      }

      function formatUTCFullYear(d, p) {
        return pad(d.getUTCFullYear() % 10000, p, 4);
      }

      function formatUTCFullYearISO(d, p) {
        var day = d.getUTCDay();
        d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);
        return pad(d.getUTCFullYear() % 10000, p, 4);
      }

      function formatUTCZone() {
        return "+0000";
      }

      function formatLiteralPercent() {
        return "%";
      }

      function formatUnixTimestamp(d) {
        return +d;
      }

      function formatUnixTimestampSeconds(d) {
        return Math.floor(+d / 1000);
      }

      var locale;
      var utcFormat;
      var utcParse;

      defaultLocale({
        dateTime: "%x, %X",
        date: "%-m/%-d/%Y",
        time: "%-I:%M:%S %p",
        periods: ["AM", "PM"],
        days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
        shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
        months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
        shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
      });

      function defaultLocale(definition) {
        locale = formatLocale(definition);
        locale.format;
        locale.parse;
        utcFormat = locale.utcFormat;
        utcParse = locale.utcParse;
        return locale;
      }

      var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ";

      function formatIsoNative(date) {
        return date.toISOString();
      }

      Date.prototype.toISOString
        ? formatIsoNative
        : utcFormat(isoSpecifier);

      function parseIsoNative(string) {
        var date = new Date(string);
        return isNaN(date) ? null : date;
      }

      +new Date("2000-01-01T00:00:00.000Z")
        ? parseIsoNative
        : utcParse(isoSpecifier);

      function transformer() {
        var x0 = 0,
          x1 = 1,
          t0,
          t1,
          k10,
          transform,
          interpolator = identity$1,
          clamp = false,
          unknown;

        function scale(x) {
          return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));
        }

        scale.domain = function (_) {
          return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];
        };

        scale.clamp = function (_) {
          return arguments.length ? (clamp = !!_, scale) : clamp;
        };

        scale.interpolator = function (_) {
          return arguments.length ? (interpolator = _, scale) : interpolator;
        };

        function range(interpolate) {
          return function (_) {
            var r0, r1;
            return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];
          };
        }

        scale.range = range(interpolate);

        scale.rangeRound = range(interpolateRound);

        scale.unknown = function (_) {
          return arguments.length ? (unknown = _, scale) : unknown;
        };

        return function (t) {
          transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);
          return scale;
        };
      }

      function copy(source, target) {
        return target
          .domain(source.domain())
          .interpolator(source.interpolator())
          .clamp(source.clamp())
          .unknown(source.unknown());
      }

      function sequential() {
        var scale = linearish(transformer()(identity$1));

        scale.copy = function () {
          return copy(scale, sequential());
        };

        return initInterpolator.apply(scale, arguments);
      }

      const COLOR_BASE = "#cecece";

      // https://www.w3.org/TR/WCAG20/#relativeluminancedef
      const rc = 0.2126;
      const gc = 0.7152;
      const bc = 0.0722;
      // low-gamma adjust coefficient
      const lowc = 1 / 12.92;
      function adjustGamma(p) {
        return Math.pow((p + 0.055) / 1.055, 2.4);
      }
      function relativeLuminance(o) {
        const rsrgb = o.r / 255;
        const gsrgb = o.g / 255;
        const bsrgb = o.b / 255;
        const r = rsrgb <= 0.03928 ? rsrgb * lowc : adjustGamma(rsrgb);
        const g = gsrgb <= 0.03928 ? gsrgb * lowc : adjustGamma(gsrgb);
        const b = bsrgb <= 0.03928 ? bsrgb * lowc : adjustGamma(bsrgb);
        return r * rc + g * gc + b * bc;
      }
      const createRainbowColor = (root) => {
        const colorParentMap = new Map();
        colorParentMap.set(root, COLOR_BASE);
        if (root.children != null) {
          const colorScale = sequential([0, root.children.length], (n) => hsl(360 * n, 0.3, 0.85));
          root.children.forEach((c, id) => {
            colorParentMap.set(c, colorScale(id).toString());
          });
        }
        const colorMap = new Map();
        const lightScale = linear().domain([0, root.height]).range([0.9, 0.3]);
        const getBackgroundColor = (node) => {
          const parents = node.ancestors();
          const colorStr = parents.length === 1
            ? colorParentMap.get(parents[0])
            : colorParentMap.get(parents[parents.length - 2]);
          const hslColor = hsl(colorStr);
          hslColor.l = lightScale(node.depth);
          return hslColor;
        };
        return (node) => {
          if (!colorMap.has(node)) {
            const backgroundColor = getBackgroundColor(node);
            const l = relativeLuminance(backgroundColor.rgb());
            const fontColor = l > 0.19 ? "#000" : "#fff";
            colorMap.set(node, {
              backgroundColor: backgroundColor.toString(),
              fontColor,
            });
          }
          return colorMap.get(node);
        };
      };

      const StaticContext = B$2({});
      const drawChart = (parentNode, data, width, height) => {
        const availableSizeProperties = getAvailableSizeOptions(data.options);
        console.time("layout create");
        const layout = treemap()
          .size([width, height])
          .paddingOuter(PADDING)
          .paddingTop(TOP_PADDING)
          .paddingInner(PADDING)
          .round(true)
          .tile(treemapResquarify);
        console.timeEnd("layout create");
        console.time("rawHierarchy create");
        const rawHierarchy = hierarchy(data.tree);
        console.timeEnd("rawHierarchy create");
        const nodeSizesCache = new Map();
        const nodeIdsCache = new Map();
        const getModuleSize = (node, sizeKey) => { var _a, _b; return (_b = (_a = nodeSizesCache.get(node)) === null || _a === void 0 ? void 0 : _a[sizeKey]) !== null && _b !== void 0 ? _b : 0; };
        console.time("rawHierarchy eachAfter cache");
        rawHierarchy.eachAfter((node) => {
          var _a;
          const nodeData = node.data;
          nodeIdsCache.set(nodeData, {
            nodeUid: generateUniqueId("node"),
            clipUid: generateUniqueId("clip"),
          });
          const sizes = { renderedLength: 0, gzipLength: 0, brotliLength: 0 };
          if (isModuleTree(nodeData)) {
            for (const sizeKey of availableSizeProperties) {
              sizes[sizeKey] = nodeData.children.reduce((acc, child) => getModuleSize(child, sizeKey) + acc, 0);
            }
          }
          else {
            for (const sizeKey of availableSizeProperties) {
              sizes[sizeKey] = (_a = data.nodeParts[nodeData.uid][sizeKey]) !== null && _a !== void 0 ? _a : 0;
            }
          }
          nodeSizesCache.set(nodeData, sizes);
        });
        console.timeEnd("rawHierarchy eachAfter cache");
        const getModuleIds = (node) => nodeIdsCache.get(node);
        console.time("color");
        const getModuleColor = createRainbowColor(rawHierarchy);
        console.timeEnd("color");
        P(o$1(StaticContext.Provider, Object.assign({
          value: {
            data,
            availableSizeProperties,
            width,
            height,
            getModuleSize,
            getModuleIds,
            getModuleColor,
            rawHierarchy,
            layout,
          }
        }, { children: o$1(Main, {}) })), parentNode);
      };

      exports.StaticContext = StaticContext;
      exports.default = drawChart;

      Object.defineProperty(exports, '__esModule', { value: true });

      return exports;

    })({});

    /*-->*/
  </script>
  <script>
    /*<!--*/
    const data = { "version": 2, "tree": { "name": "root", "children": [{ "name": "assets/index-9931537f.js", "children": [{ "name": "D:/www/auto-show/src/view/notFound", "children": [{ "uid": "cd96-1", "name": "index.vue?vue&type=style&index=0&scoped=f9fc40f6&lang.less" }, { "uid": "cd96-3", "name": "index.vue" }] }] }, { "name": "assets/rate-89872467.js", "children": [{ "name": "D:/www/auto-show/src/view/components", "children": [{ "uid": "cd96-5", "name": "rate.vue?vue&type=style&index=0&scoped=23df78a5&lang.less" }, { "uid": "cd96-7", "name": "rate.vue" }] }] }, { "name": "assets/vPopup-d2ccfd37.js", "children": [{ "name": "D:/www/auto-show/src/plugins/vPopup", "children": [{ "uid": "cd96-9", "name": "vPopup.vue?vue&type=style&index=0&scoped=137c29b8&lang.less" }, { "uid": "cd96-11", "name": "vPopup.vue" }] }] }, { "name": "assets/detail-05434f2e.js", "children": [{ "name": "D:/www/auto-show/src/view/news", "children": [{ "uid": "cd96-13", "name": "detail.vue?vue&type=style&index=0&scoped=dcf5e5af&lang.less" }, { "uid": "cd96-15", "name": "detail.vue" }] }] }, { "name": "assets/index-7f7914e9.js", "children": [{ "name": "static", "children": [{ "uid": "cd96-17", "name": "about-1.jpg" }, { "uid": "cd96-19", "name": "tc7.png" }, { "uid": "cd96-21", "name": "dh.png" }] }, { "name": "D:/www/auto-show/src/view/aboutus", "children": [{ "uid": "cd96-23", "name": "index.vue?vue&type=style&index=0&scoped=41070dc9&lang.less" }, { "uid": "cd96-25", "name": "index.vue" }] }] }, { "name": "assets/index-9bf1d0e3.js", "children": [{ "name": "D:/www/auto-show/src/view/news", "children": [{ "uid": "cd96-27", "name": "index.vue?vue&type=style&index=0&scoped=f42ac854&lang.less" }, { "uid": "cd96-29", "name": "index.vue" }] }] }, { "name": "assets/index-0cab48db.js", "children": [{ "name": "static", "children": [{ "uid": "cd96-31", "name": "houdu.png" }, { "uid": "cd96-33", "name": "zhibao.png" }] }, { "name": "D:/www/auto-show/src/view/paintprotection", "children": [{ "uid": "cd96-35", "name": "index.vue?vue&type=style&index=0&scoped=e36492fe&lang.less" }, { "uid": "cd96-37", "name": "index.vue" }] }] }, { "name": "assets/index-10b30bd3.js", "children": [{ "name": "static", "children": [{ "uid": "cd96-39", "name": "可见光.png" }, { "uid": "cd96-41", "name": "太阳能总阻隔率.png" }, { "uid": "cd96-43", "name": "可见光反射比.png" }, { "uid": "cd96-45", "name": "紫外线阻隔率.png" }, { "uid": "cd96-47", "name": "厚度.png" }, { "uid": "cd96-49", "name": "质保.png" }] }, { "name": "D:/www/auto-show/src/view/windowmembrane", "children": [{ "uid": "cd96-51", "name": "index.vue?vue&type=style&index=0&scoped=f937974b&lang.less" }, { "uid": "cd96-53", "name": "index.vue" }] }] }, { "name": "assets/index-1d342667.js", "children": [{ "name": "D:/www/auto-show/src/view", "children": [{ "name": "components/indexSlider", "children": [{ "uid": "cd96-55", "name": "index.vue?vue&type=style&index=0&scoped=e305755d&lang.less" }, { "uid": "cd96-57", "name": "index.vue" }] }, { "name": "index", "children": [{ "uid": "cd96-65", "name": "index.vue?vue&type=style&index=0&scoped=3426e76b&lang.less" }, { "uid": "cd96-67", "name": "index.vue" }] }] }, { "name": "static", "children": [{ "uid": "cd96-59", "name": "jiajus.jpg" }, { "uid": "cd96-61", "name": "che.mp4" }, { "uid": "cd96-63", "name": "poster.webp" }] }] }, { "name": "assets/index-cbd0bde5.js", "children": [{ "name": "D:/www/auto-show/src", "children": [{ "name": "assets/images", "children": [{ "uid": "cd96-69", "name": "ditu.png" }, { "uid": "cd96-71", "name": "1.png" }, { "uid": "cd96-73", "name": "2.png" }, { "uid": "cd96-75", "name": "3.png" }] }, { "name": "view/concatus", "children": [{ "uid": "cd96-77", "name": "index.vue?vue&type=style&index=0&scoped=fa326ba1&lang.less" }, { "uid": "cd96-79", "name": "index.vue" }] }] }] }, { "name": "assets/index-a305fa10.js", "children": [{ "name": "static/0ef781787f9087ccf05ea12329aa6b1943576e7b208c2f-i7cyFT.png", "uid": "cd96-81" }, { "name": "D:/www/auto-show/src/view/construction", "children": [{ "uid": "cd96-83", "name": "index.vue?vue&type=style&index=0&scoped=896d1964&lang.less" }, { "uid": "cd96-85", "name": "index.vue" }] }] }, { "name": "assets/index-3799e9c4.js", "children": [{ "name": "D:/www/auto-show/src/view", "children": [{ "name": "components/select", "children": [{ "uid": "cd96-87", "name": "index.vue?vue&type=style&index=0&scoped=488e0e27&lang.less" }, { "uid": "cd96-89", "name": "index.vue" }] }, { "name": "store", "children": [{ "uid": "cd96-93", "name": "index.vue?vue&type=style&index=0&scoped=18403c82&lang.less" }, { "uid": "cd96-95", "name": "index.vue" }] }] }, { "name": "static/关闭.png", "uid": "cd96-91" }] }, { "name": "assets/swiper-bundle-e76e1664.js", "children": [{ "name": "D:/www/auto-show/node_modules/swiper", "children": [{ "name": "shared", "children": [{ "uid": "cd96-97", "name": "ssr-window.esm.mjs" }, { "uid": "cd96-99", "name": "utils.mjs" }, { "uid": "cd96-101", "name": "swiper-core.mjs" }, { "uid": "cd96-103", "name": "update-swiper.mjs" }, { "uid": "cd96-105", "name": "update-on-virtual-data.mjs" }] }, { "uid": "cd96-107", "name": "swiper-vue.mjs" }, { "uid": "cd96-109", "name": "swiper-bundle.css" }] }] }, { "name": "assets/index-db6a5f4b.js", "children": [{ "name": "\u0000vite", "children": [{ "uid": "cd96-111", "name": "modulepreload-polyfill" }, { "uid": "cd96-241", "name": "preload-helper" }] }, { "name": "D:/www/auto-show", "children": [{ "name": "node_modules", "children": [{ "name": "@vue", "children": [{ "name": "shared/dist/shared.esm-bundler.js", "uid": "cd96-113" }, { "name": "reactivity/dist/reactivity.esm-bundler.js", "uid": "cd96-115" }, { "name": "runtime-core/dist/runtime-core.esm-bundler.js", "uid": "cd96-117" }, { "name": "runtime-dom/dist/runtime-dom.esm-bundler.js", "uid": "cd96-119" }] }, { "name": "vue-router/dist/vue-router.mjs", "uid": "cd96-135" }, { "name": "axios/lib", "children": [{ "name": "helpers", "children": [{ "uid": "cd96-159", "name": "bind.js" }, { "uid": "cd96-165", "name": "null.js" }, { "uid": "cd96-167", "name": "toFormData.js" }, { "uid": "cd96-169", "name": "AxiosURLSearchParams.js" }, { "uid": "cd96-171", "name": "buildURL.js" }, { "uid": "cd96-185", "name": "toURLEncodedForm.js" }, { "uid": "cd96-187", "name": "formDataToJSON.js" }, { "uid": "cd96-191", "name": "parseHeaders.js" }, { "uid": "cd96-203", "name": "cookies.js" }, { "uid": "cd96-205", "name": "isAbsoluteURL.js" }, { "uid": "cd96-207", "name": "combineURLs.js" }, { "uid": "cd96-211", "name": "isURLSameOrigin.js" }, { "uid": "cd96-213", "name": "parseProtocol.js" }, { "uid": "cd96-215", "name": "speedometer.js" }, { "uid": "cd96-227", "name": "validator.js" }, { "uid": "cd96-233", "name": "spread.js" }, { "uid": "cd96-235", "name": "isAxiosError.js" }, { "uid": "cd96-237", "name": "HttpStatusCode.js" }] }, { "uid": "cd96-161", "name": "utils.js" }, { "name": "core", "children": [{ "uid": "cd96-163", "name": "AxiosError.js" }, { "uid": "cd96-173", "name": "InterceptorManager.js" }, { "uid": "cd96-193", "name": "AxiosHeaders.js" }, { "uid": "cd96-195", "name": "transformData.js" }, { "uid": "cd96-201", "name": "settle.js" }, { "uid": "cd96-209", "name": "buildFullPath.js" }, { "uid": "cd96-221", "name": "dispatchRequest.js" }, { "uid": "cd96-223", "name": "mergeConfig.js" }, { "uid": "cd96-229", "name": "Axios.js" }] }, { "name": "defaults", "children": [{ "uid": "cd96-175", "name": "transitional.js" }, { "uid": "cd96-189", "name": "index.js" }] }, { "name": "platform/browser", "children": [{ "name": "classes", "children": [{ "uid": "cd96-177", "name": "URLSearchParams.js" }, { "uid": "cd96-179", "name": "FormData.js" }, { "uid": "cd96-181", "name": "Blob.js" }] }, { "uid": "cd96-183", "name": "index.js" }] }, { "name": "cancel", "children": [{ "uid": "cd96-197", "name": "isCancel.js" }, { "uid": "cd96-199", "name": "CanceledError.js" }, { "uid": "cd96-231", "name": "CancelToken.js" }] }, { "name": "adapters", "children": [{ "uid": "cd96-217", "name": "xhr.js" }, { "uid": "cd96-219", "name": "adapters.js" }] }, { "name": "env/data.js", "uid": "cd96-225" }, { "uid": "cd96-239", "name": "axios.js" }] }, { "name": "vue-demi/lib/index.mjs", "uid": "cd96-243" }, { "name": "pinia/dist/pinia.mjs", "uid": "cd96-245" }, { "name": "animate.css/animate.css", "uid": "cd96-287" }] }, { "name": "src", "children": [{ "name": "assets", "children": [{ "name": "images/banner", "children": [{ "uid": "cd96-121", "name": "qichemo.jpg" }, { "uid": "cd96-123", "name": "qimian.jpg" }, { "uid": "cd96-125", "name": "jiaju.jpg" }, { "uid": "cd96-127", "name": "about.jpg" }, { "uid": "cd96-129", "name": "news.jpg" }, { "uid": "cd96-131", "name": "store.jpg" }] }, { "name": "css", "children": [{ "uid": "cd96-283", "name": "style.less" }, { "name": "iconfont/icon.css", "uid": "cd96-285" }] }] }, { "name": "store", "children": [{ "uid": "cd96-247", "name": "index.js" }, { "uid": "cd96-249", "name": "path.js" }, { "uid": "cd96-261", "name": "config.js" }] }, { "name": "route/index.js", "uid": "cd96-251" }, { "name": "plugins", "children": [{ "name": "vToast", "children": [{ "uid": "cd96-253", "name": "vToast.vue?vue&type=style&index=0&scoped=6bda87a7&lang.less" }, { "uid": "cd96-255", "name": "vToast.vue" }, { "uid": "cd96-257", "name": "index.js" }] }, { "name": "vConfirm", "children": [{ "uid": "cd96-275", "name": "vConfirm.vue?vue&type=style&index=0&scoped=decd801b&lang.css" }, { "uid": "cd96-277", "name": "vConfirm.vue" }, { "uid": "cd96-279", "name": "index.js" }] }, { "name": "vPopup/index.js", "uid": "cd96-281" }] }, { "name": "utils/request.js", "uid": "cd96-259" }, { "uid": "cd96-271", "name": "App.vue?vue&type=style&index=0&lang.less" }, { "uid": "cd96-273", "name": "App.vue" }, { "uid": "cd96-291", "name": "main.js" }] }, { "name": "components", "children": [{ "uid": "cd96-137", "name": "headers.vue?vue&type=style&index=0&scoped=879b031a&lang.less" }, { "uid": "cd96-141", "name": "headers.vue" }, { "uid": "cd96-155", "name": "bottoms.vue?vue&type=style&index=0&scoped=590a1b47&lang.less" }, { "uid": "cd96-157", "name": "bottoms.vue" }] }, { "uid": "cd96-289", "name": "animateOnScroll.js" }, { "uid": "cd96-293", "name": "index.html" }] }, { "name": "static", "children": [{ "uid": "cd96-133", "name": "logo.png" }, { "uid": "cd96-143", "name": "dibu.png" }, { "uid": "cd96-145", "name": "wlogo.png" }, { "uid": "cd96-147", "name": "tmall.png" }, { "uid": "cd96-149", "name": "jd.png" }, { "uid": "cd96-151", "name": "pdd.png" }, { "uid": "cd96-153", "name": "erwei3.jpg" }, { "uid": "cd96-263", "name": "index1.png" }, { "uid": "cd96-265", "name": "index2.png" }, { "uid": "cd96-267", "name": "index3.png" }, { "uid": "cd96-269", "name": "dy.png" }] }, { "uid": "cd96-139", "name": "\u0000plugin-vue:export-helper" }] }], "isRoot": true }, "nodeParts": { "cd96-1": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 63, "metaUid": "cd96-0" }, "cd96-3": { "renderedLength": 1550, "gzipLength": 617, "brotliLength": 543, "metaUid": "cd96-2" }, "cd96-5": { "renderedLength": 64, "gzipLength": 79, "brotliLength": 65, "metaUid": "cd96-4" }, "cd96-7": { "renderedLength": 3007, "gzipLength": 1162, "brotliLength": 934, "metaUid": "cd96-6" }, "cd96-9": { "renderedLength": 66, "gzipLength": 82, "brotliLength": 70, "metaUid": "cd96-8" }, "cd96-11": { "renderedLength": 4800, "gzipLength": 1318, "brotliLength": 1141, "metaUid": "cd96-10" }, "cd96-13": { "renderedLength": 66, "gzipLength": 82, "brotliLength": 61, "metaUid": "cd96-12" }, "cd96-15": { "renderedLength": 4365, "gzipLength": 1418, "brotliLength": 1184, "metaUid": "cd96-14" }, "cd96-17": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-16" }, "cd96-19": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-18" }, "cd96-21": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-20" }, "cd96-23": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 63, "metaUid": "cd96-22" }, "cd96-25": { "renderedLength": 5534, "gzipLength": 2108, "brotliLength": 1634, "metaUid": "cd96-24" }, "cd96-27": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 63, "metaUid": "cd96-26" }, "cd96-29": { "renderedLength": 6406, "gzipLength": 1880, "brotliLength": 1604, "metaUid": "cd96-28" }, "cd96-31": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-30" }, "cd96-33": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 56, "metaUid": "cd96-32" }, "cd96-35": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 62, "metaUid": "cd96-34" }, "cd96-37": { "renderedLength": 11505, "gzipLength": 2397, "brotliLength": 2038, "metaUid": "cd96-36" }, "cd96-39": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-38" }, "cd96-41": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-40" }, "cd96-43": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-42" }, "cd96-45": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-44" }, "cd96-47": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-46" }, "cd96-49": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-48" }, "cd96-51": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 63, "metaUid": "cd96-50" }, "cd96-53": { "renderedLength": 16303, "gzipLength": 2927, "brotliLength": 2423, "metaUid": "cd96-52" }, "cd96-55": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 62, "metaUid": "cd96-54" }, "cd96-57": { "renderedLength": 4941, "gzipLength": 1833, "brotliLength": 1514, "metaUid": "cd96-56" }, "cd96-59": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-58" }, "cd96-61": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-60" }, "cd96-63": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-62" }, "cd96-65": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 62, "metaUid": "cd96-64" }, "cd96-67": { "renderedLength": 11186, "gzipLength": 2939, "brotliLength": 2356, "metaUid": "cd96-66" }, "cd96-69": { "renderedLength": 46, "gzipLength": 66, "brotliLength": 50, "metaUid": "cd96-68" }, "cd96-71": { "renderedLength": 944, "gzipLength": 765, "brotliLength": 748, "metaUid": "cd96-70" }, "cd96-73": { "renderedLength": 680, "gzipLength": 566, "brotliLength": 555, "metaUid": "cd96-72" }, "cd96-75": { "renderedLength": 1532, "gzipLength": 1206, "brotliLength": 1189, "metaUid": "cd96-74" }, "cd96-77": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 63, "metaUid": "cd96-76" }, "cd96-79": { "renderedLength": 2627, "gzipLength": 945, "brotliLength": 777, "metaUid": "cd96-78" }, "cd96-81": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-80" }, "cd96-83": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 63, "metaUid": "cd96-82" }, "cd96-85": { "renderedLength": 13949, "gzipLength": 3106, "brotliLength": 2528, "metaUid": "cd96-84" }, "cd96-87": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 63, "metaUid": "cd96-86" }, "cd96-89": { "renderedLength": 3607, "gzipLength": 1338, "brotliLength": 1153, "metaUid": "cd96-88" }, "cd96-91": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-90" }, "cd96-93": { "renderedLength": 65, "gzipLength": 77, "brotliLength": 63, "metaUid": "cd96-92" }, "cd96-95": { "renderedLength": 17425, "gzipLength": 2947, "brotliLength": 2507, "metaUid": "cd96-94" }, "cd96-97": { "renderedLength": 2831, "gzipLength": 1057, "brotliLength": 843, "metaUid": "cd96-96" }, "cd96-99": { "renderedLength": 9606, "gzipLength": 2752, "brotliLength": 2408, "metaUid": "cd96-98" }, "cd96-101": { "renderedLength": 131583, "gzipLength": 26451, "brotliLength": 22631, "metaUid": "cd96-100" }, "cd96-103": { "renderedLength": 10411, "gzipLength": 2717, "brotliLength": 2308, "metaUid": "cd96-102" }, "cd96-105": { "renderedLength": 3924, "gzipLength": 1146, "brotliLength": 985, "metaUid": "cd96-104" }, "cd96-107": { "renderedLength": 21318, "gzipLength": 4277, "brotliLength": 3785, "metaUid": "cd96-106" }, "cd96-109": { "renderedLength": 24, "gzipLength": 44, "brotliLength": 28, "metaUid": "cd96-108" }, "cd96-111": { "renderedLength": 1548, "gzipLength": 579, "brotliLength": 494, "metaUid": "cd96-110" }, "cd96-113": { "renderedLength": 7696, "gzipLength": 2658, "brotliLength": 2304, "metaUid": "cd96-112" }, "cd96-115": { "renderedLength": 33737, "gzipLength": 7238, "brotliLength": 6456, "metaUid": "cd96-114" }, "cd96-117": { "renderedLength": 183132, "gzipLength": 42510, "brotliLength": 35696, "metaUid": "cd96-116" }, "cd96-119": { "renderedLength": 29790, "gzipLength": 8582, "brotliLength": 7348, "metaUid": "cd96-118" }, "cd96-121": { "renderedLength": 48, "gzipLength": 68, "brotliLength": 52, "metaUid": "cd96-120" }, "cd96-123": { "renderedLength": 48, "gzipLength": 68, "brotliLength": 52, "metaUid": "cd96-122" }, "cd96-125": { "renderedLength": 48, "gzipLength": 68, "brotliLength": 52, "metaUid": "cd96-124" }, "cd96-127": { "renderedLength": 48, "gzipLength": 68, "brotliLength": 52, "metaUid": "cd96-126" }, "cd96-129": { "renderedLength": 48, "gzipLength": 68, "brotliLength": 52, "metaUid": "cd96-128" }, "cd96-131": { "renderedLength": 48, "gzipLength": 68, "brotliLength": 52, "metaUid": "cd96-130" }, "cd96-133": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-132" }, "cd96-135": { "renderedLength": 102762, "gzipLength": 25709, "brotliLength": 22107, "metaUid": "cd96-134" }, "cd96-137": { "renderedLength": 67, "gzipLength": 83, "brotliLength": 63, "metaUid": "cd96-136" }, "cd96-139": { "renderedLength": 159, "gzipLength": 136, "brotliLength": 120, "metaUid": "cd96-138" }, "cd96-141": { "renderedLength": 9797, "gzipLength": 2325, "brotliLength": 1864, "metaUid": "cd96-140" }, "cd96-143": { "renderedLength": 55, "gzipLength": 75, "brotliLength": 59, "metaUid": "cd96-142" }, "cd96-145": { "renderedLength": 55, "gzipLength": 75, "brotliLength": 59, "metaUid": "cd96-144" }, "cd96-147": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-146" }, "cd96-149": { "renderedLength": 55, "gzipLength": 75, "brotliLength": 59, "metaUid": "cd96-148" }, "cd96-151": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-150" }, "cd96-153": { "renderedLength": 55, "gzipLength": 75, "brotliLength": 59, "metaUid": "cd96-152" }, "cd96-155": { "renderedLength": 67, "gzipLength": 83, "brotliLength": 63, "metaUid": "cd96-154" }, "cd96-157": { "renderedLength": 7283, "gzipLength": 2197, "brotliLength": 1726, "metaUid": "cd96-156" }, "cd96-159": { "renderedLength": 103, "gzipLength": 99, "brotliLength": 74, "metaUid": "cd96-158" }, "cd96-161": { "renderedLength": 17153, "gzipLength": 4951, "brotliLength": 4382, "metaUid": "cd96-160" }, "cd96-163": { "renderedLength": 2460, "gzipLength": 964, "brotliLength": 807, "metaUid": "cd96-162" }, "cd96-165": { "renderedLength": 60, "gzipLength": 80, "brotliLength": 56, "metaUid": "cd96-164" }, "cd96-167": { "renderedLength": 5739, "gzipLength": 1889, "brotliLength": 1666, "metaUid": "cd96-166" }, "cd96-169": { "renderedLength": 1348, "gzipLength": 627, "brotliLength": 513, "metaUid": "cd96-168" }, "cd96-171": { "renderedLength": 1423, "gzipLength": 633, "brotliLength": 523, "metaUid": "cd96-170" }, "cd96-173": { "renderedLength": 1531, "gzipLength": 606, "brotliLength": 500, "metaUid": "cd96-172" }, "cd96-175": { "renderedLength": 116, "gzipLength": 113, "brotliLength": 87, "metaUid": "cd96-174" }, "cd96-177": { "renderedLength": 106, "gzipLength": 84, "brotliLength": 72, "metaUid": "cd96-176" }, "cd96-179": { "renderedLength": 69, "gzipLength": 73, "brotliLength": 55, "metaUid": "cd96-178" }, "cd96-181": { "renderedLength": 57, "gzipLength": 69, "brotliLength": 56, "metaUid": "cd96-180" }, "cd96-183": { "renderedLength": 1671, "gzipLength": 712, "brotliLength": 580, "metaUid": "cd96-182" }, "cd96-185": { "renderedLength": 396, "gzipLength": 263, "brotliLength": 202, "metaUid": "cd96-184" }, "cd96-187": { "renderedLength": 2037, "gzipLength": 828, "brotliLength": 703, "metaUid": "cd96-186" }, "cd96-189": { "renderedLength": 4217, "gzipLength": 1481, "brotliLength": 1293, "metaUid": "cd96-188" }, "cd96-191": { "renderedLength": 1336, "gzipLength": 689, "brotliLength": 569, "metaUid": "cd96-190" }, "cd96-193": { "renderedLength": 6559, "gzipLength": 1897, "brotliLength": 1689, "metaUid": "cd96-192" }, "cd96-195": { "renderedLength": 618, "gzipLength": 328, "brotliLength": 284, "metaUid": "cd96-194" }, "cd96-197": { "renderedLength": 68, "gzipLength": 80, "brotliLength": 72, "metaUid": "cd96-196" }, "cd96-199": { "renderedLength": 568, "gzipLength": 313, "brotliLength": 265, "metaUid": "cd96-198" }, "cd96-201": { "renderedLength": 762, "gzipLength": 346, "brotliLength": 272, "metaUid": "cd96-200" }, "cd96-203": { "renderedLength": 1307, "gzipLength": 522, "brotliLength": 409, "metaUid": "cd96-202" }, "cd96-205": { "renderedLength": 530, "gzipLength": 354, "brotliLength": 253, "metaUid": "cd96-204" }, "cd96-207": { "renderedLength": 349, "gzipLength": 206, "brotliLength": 158, "metaUid": "cd96-206" }, "cd96-209": { "renderedLength": 553, "gzipLength": 278, "brotliLength": 236, "metaUid": "cd96-208" }, "cd96-211": { "renderedLength": 2179, "gzipLength": 853, "brotliLength": 689, "metaUid": "cd96-210" }, "cd96-213": { "renderedLength": 120, "gzipLength": 127, "brotliLength": 98, "metaUid": "cd96-212" }, "cd96-215": { "renderedLength": 1047, "gzipLength": 462, "brotliLength": 400, "metaUid": "cd96-214" }, "cd96-217": { "renderedLength": 7587, "gzipLength": 2426, "brotliLength": 2092, "metaUid": "cd96-216" }, "cd96-219": { "renderedLength": 1291, "gzipLength": 552, "brotliLength": 477, "metaUid": "cd96-218" }, "cd96-221": { "renderedLength": 1868, "gzipLength": 646, "brotliLength": 545, "metaUid": "cd96-220" }, "cd96-223": { "renderedLength": 3233, "gzipLength": 926, "brotliLength": 796, "metaUid": "cd96-222" }, "cd96-225": { "renderedLength": 24, "gzipLength": 44, "brotliLength": 28, "metaUid": "cd96-224" }, "cd96-227": { "renderedLength": 2475, "gzipLength": 937, "brotliLength": 812, "metaUid": "cd96-226" }, "cd96-229": { "renderedLength": 5068, "gzipLength": 1568, "brotliLength": 1384, "metaUid": "cd96-228" }, "cd96-231": { "renderedLength": 2467, "gzipLength": 826, "brotliLength": 731, "metaUid": "cd96-230" }, "cd96-233": { "renderedLength": 533, "gzipLength": 297, "brotliLength": 254, "metaUid": "cd96-232" }, "cd96-235": { "renderedLength": 306, "gzipLength": 200, "brotliLength": 156, "metaUid": "cd96-234" }, "cd96-237": { "renderedLength": 1609, "gzipLength": 814, "brotliLength": 630, "metaUid": "cd96-236" }, "cd96-239": { "renderedLength": 1712, "gzipLength": 667, "brotliLength": 559, "metaUid": "cd96-238" }, "cd96-241": { "renderedLength": 2205, "gzipLength": 974, "brotliLength": 790, "metaUid": "cd96-240" }, "cd96-243": { "renderedLength": 19, "gzipLength": 39, "brotliLength": 23, "metaUid": "cd96-242" }, "cd96-245": { "renderedLength": 18002, "gzipLength": 5145, "brotliLength": 4461, "metaUid": "cd96-244" }, "cd96-247": { "renderedLength": 28, "gzipLength": 45, "brotliLength": 32, "metaUid": "cd96-246" }, "cd96-249": { "renderedLength": 883, "gzipLength": 360, "brotliLength": 314, "metaUid": "cd96-248" }, "cd96-251": { "renderedLength": 2782, "gzipLength": 793, "brotliLength": 629, "metaUid": "cd96-250" }, "cd96-253": { "renderedLength": 66, "gzipLength": 82, "brotliLength": 70, "metaUid": "cd96-252" }, "cd96-255": { "renderedLength": 2748, "gzipLength": 956, "brotliLength": 791, "metaUid": "cd96-254" }, "cd96-257": { "renderedLength": 2174, "gzipLength": 632, "brotliLength": 510, "metaUid": "cd96-256" }, "cd96-259": { "renderedLength": 2764, "gzipLength": 1225, "brotliLength": 956, "metaUid": "cd96-258" }, "cd96-261": { "renderedLength": 595, "gzipLength": 336, "brotliLength": 284, "metaUid": "cd96-260" }, "cd96-263": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-262" }, "cd96-265": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-264" }, "cd96-267": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-266" }, "cd96-269": { "renderedLength": 53, "gzipLength": 73, "brotliLength": 57, "metaUid": "cd96-268" }, "cd96-271": { "renderedLength": 47, "gzipLength": 63, "brotliLength": 51, "metaUid": "cd96-270" }, "cd96-273": { "renderedLength": 4303, "gzipLength": 1777, "brotliLength": 1410, "metaUid": "cd96-272" }, "cd96-275": { "renderedLength": 68, "gzipLength": 84, "brotliLength": 62, "metaUid": "cd96-274" }, "cd96-277": { "renderedLength": 4208, "gzipLength": 1256, "brotliLength": 1065, "metaUid": "cd96-276" }, "cd96-279": { "renderedLength": 1779, "gzipLength": 583, "brotliLength": 453, "metaUid": "cd96-278" }, "cd96-281": { "renderedLength": 255, "gzipLength": 236, "brotliLength": 183, "metaUid": "cd96-280" }, "cd96-283": { "renderedLength": 17, "gzipLength": 37, "brotliLength": 21, "metaUid": "cd96-282" }, "cd96-285": { "renderedLength": 16, "gzipLength": 36, "brotliLength": 20, "metaUid": "cd96-284" }, "cd96-287": { "renderedLength": 19, "gzipLength": 39, "brotliLength": 23, "metaUid": "cd96-286" }, "cd96-289": { "renderedLength": 895, "gzipLength": 386, "brotliLength": 330, "metaUid": "cd96-288" }, "cd96-291": { "renderedLength": 543, "gzipLength": 386, "brotliLength": 301, "metaUid": "cd96-290" }, "cd96-293": { "renderedLength": 0, "gzipLength": 0, "brotliLength": 0, "metaUid": "cd96-292" } }, "nodeMetas": { "cd96-0": { "id": "D:/www/auto-show/src/view/notFound/index.vue?vue&type=style&index=0&scoped=f9fc40f6&lang.less", "moduleParts": { "assets/index-9931537f.js": "cd96-1" }, "imported": [], "importedBy": [{ "uid": "cd96-2" }] }, "cd96-2": { "id": "D:/www/auto-show/src/view/notFound/index.vue", "moduleParts": { "assets/index-9931537f.js": "cd96-3" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-248" }, { "uid": "cd96-0" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-4": { "id": "D:/www/auto-show/src/view/components/rate.vue?vue&type=style&index=0&scoped=23df78a5&lang.less", "moduleParts": { "assets/rate-89872467.js": "cd96-5" }, "imported": [], "importedBy": [{ "uid": "cd96-6" }] }, "cd96-6": { "id": "D:/www/auto-show/src/view/components/rate.vue", "moduleParts": { "assets/rate-89872467.js": "cd96-7" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-4" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-36" }, { "uid": "cd96-52" }, { "uid": "cd96-78" }, { "uid": "cd96-24" }] }, "cd96-8": { "id": "D:/www/auto-show/src/plugins/vPopup/vPopup.vue?vue&type=style&index=0&scoped=137c29b8&lang.less", "moduleParts": { "assets/vPopup-d2ccfd37.js": "cd96-9" }, "imported": [], "importedBy": [{ "uid": "cd96-10" }] }, "cd96-10": { "id": "D:/www/auto-show/src/plugins/vPopup/vPopup.vue", "moduleParts": { "assets/vPopup-d2ccfd37.js": "cd96-11" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-8" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-280" }] }, "cd96-12": { "id": "D:/www/auto-show/src/view/news/detail.vue?vue&type=style&index=0&scoped=dcf5e5af&lang.less", "moduleParts": { "assets/detail-05434f2e.js": "cd96-13" }, "imported": [], "importedBy": [{ "uid": "cd96-14" }] }, "cd96-14": { "id": "D:/www/auto-show/src/view/news/detail.vue", "moduleParts": { "assets/detail-05434f2e.js": "cd96-15" }, "imported": [{ "uid": "cd96-258" }, { "uid": "cd96-134" }, { "uid": "cd96-294" }, { "uid": "cd96-12" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-16": { "id": "https://www.kdxwindowfilm.com/banners/static/about-1.jpg", "moduleParts": { "assets/index-7f7914e9.js": "cd96-17" }, "imported": [], "importedBy": [{ "uid": "cd96-24" }] }, "cd96-18": { "id": "https://www.kdxwindowfilm.com/banners/static/tc7.png", "moduleParts": { "assets/index-7f7914e9.js": "cd96-19" }, "imported": [], "importedBy": [{ "uid": "cd96-24" }] }, "cd96-20": { "id": "https://www.kdxwindowfilm.com/banners/static/dh.png", "moduleParts": { "assets/index-7f7914e9.js": "cd96-21" }, "imported": [], "importedBy": [{ "uid": "cd96-24" }] }, "cd96-22": { "id": "D:/www/auto-show/src/view/aboutus/index.vue?vue&type=style&index=0&scoped=41070dc9&lang.less", "moduleParts": { "assets/index-7f7914e9.js": "cd96-23" }, "imported": [], "importedBy": [{ "uid": "cd96-24" }] }, "cd96-24": { "id": "D:/www/auto-show/src/view/aboutus/index.vue", "moduleParts": { "assets/index-7f7914e9.js": "cd96-25" }, "imported": [{ "uid": "cd96-106" }, { "uid": "cd96-108" }, { "uid": "cd96-6" }, { "uid": "cd96-260" }, { "uid": "cd96-244" }, { "uid": "cd96-294" }, { "uid": "cd96-16" }, { "uid": "cd96-18" }, { "uid": "cd96-20" }, { "uid": "cd96-22" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-26": { "id": "D:/www/auto-show/src/view/news/index.vue?vue&type=style&index=0&scoped=f42ac854&lang.less", "moduleParts": { "assets/index-9bf1d0e3.js": "cd96-27" }, "imported": [], "importedBy": [{ "uid": "cd96-28" }] }, "cd96-28": { "id": "D:/www/auto-show/src/view/news/index.vue", "moduleParts": { "assets/index-9bf1d0e3.js": "cd96-29" }, "imported": [{ "uid": "cd96-258" }, { "uid": "cd96-294" }, { "uid": "cd96-26" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-30": { "id": "https://www.kdxwindowfilm.com/banners/static/houdu.png", "moduleParts": { "assets/index-0cab48db.js": "cd96-31" }, "imported": [], "importedBy": [{ "uid": "cd96-36" }] }, "cd96-32": { "id": "https://www.kdxwindowfilm.com/banners/static/zhibao.png", "moduleParts": { "assets/index-0cab48db.js": "cd96-33" }, "imported": [], "importedBy": [{ "uid": "cd96-36" }] }, "cd96-34": { "id": "D:/www/auto-show/src/view/paintprotection/index.vue?vue&type=style&index=0&scoped=e36492fe&lang.less", "moduleParts": { "assets/index-0cab48db.js": "cd96-35" }, "imported": [], "importedBy": [{ "uid": "cd96-36" }] }, "cd96-36": { "id": "D:/www/auto-show/src/view/paintprotection/index.vue", "moduleParts": { "assets/index-0cab48db.js": "cd96-37" }, "imported": [{ "uid": "cd96-258" }, { "uid": "cd96-6" }, { "uid": "cd96-294" }, { "uid": "cd96-30" }, { "uid": "cd96-32" }, { "uid": "cd96-34" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-38": { "id": "https://www.kdxwindowfilm.com/banners/static/可见光.png", "moduleParts": { "assets/index-10b30bd3.js": "cd96-39" }, "imported": [], "importedBy": [{ "uid": "cd96-52" }] }, "cd96-40": { "id": "https://www.kdxwindowfilm.com/banners/static/太阳能总阻隔率.png", "moduleParts": { "assets/index-10b30bd3.js": "cd96-41" }, "imported": [], "importedBy": [{ "uid": "cd96-52" }] }, "cd96-42": { "id": "https://www.kdxwindowfilm.com/banners/static/可见光反射比.png", "moduleParts": { "assets/index-10b30bd3.js": "cd96-43" }, "imported": [], "importedBy": [{ "uid": "cd96-52" }] }, "cd96-44": { "id": "https://www.kdxwindowfilm.com/banners/static/紫外线阻隔率.png", "moduleParts": { "assets/index-10b30bd3.js": "cd96-45" }, "imported": [], "importedBy": [{ "uid": "cd96-52" }] }, "cd96-46": { "id": "https://www.kdxwindowfilm.com/banners/static/厚度.png", "moduleParts": { "assets/index-10b30bd3.js": "cd96-47" }, "imported": [], "importedBy": [{ "uid": "cd96-52" }] }, "cd96-48": { "id": "https://www.kdxwindowfilm.com/banners/static/质保.png", "moduleParts": { "assets/index-10b30bd3.js": "cd96-49" }, "imported": [], "importedBy": [{ "uid": "cd96-52" }] }, "cd96-50": { "id": "D:/www/auto-show/src/view/windowmembrane/index.vue?vue&type=style&index=0&scoped=f937974b&lang.less", "moduleParts": { "assets/index-10b30bd3.js": "cd96-51" }, "imported": [], "importedBy": [{ "uid": "cd96-52" }] }, "cd96-52": { "id": "D:/www/auto-show/src/view/windowmembrane/index.vue", "moduleParts": { "assets/index-10b30bd3.js": "cd96-53" }, "imported": [{ "uid": "cd96-258" }, { "uid": "cd96-6" }, { "uid": "cd96-294" }, { "uid": "cd96-38" }, { "uid": "cd96-40" }, { "uid": "cd96-42" }, { "uid": "cd96-44" }, { "uid": "cd96-46" }, { "uid": "cd96-48" }, { "uid": "cd96-50" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-54": { "id": "D:/www/auto-show/src/view/components/indexSlider/index.vue?vue&type=style&index=0&scoped=e305755d&lang.less", "moduleParts": { "assets/index-1d342667.js": "cd96-55" }, "imported": [], "importedBy": [{ "uid": "cd96-56" }] }, "cd96-56": { "id": "D:/www/auto-show/src/view/components/indexSlider/index.vue", "moduleParts": { "assets/index-1d342667.js": "cd96-57" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-258" }, { "uid": "cd96-54" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-66" }] }, "cd96-58": { "id": "https://www.kdxwindowfilm.com/banners/static/jiajus.jpg", "moduleParts": { "assets/index-1d342667.js": "cd96-59" }, "imported": [], "importedBy": [{ "uid": "cd96-66" }] }, "cd96-60": { "id": "https://www.kdxwindowfilm.com/banners/static/che.mp4", "moduleParts": { "assets/index-1d342667.js": "cd96-61" }, "imported": [], "importedBy": [{ "uid": "cd96-66" }] }, "cd96-62": { "id": "https://www.kdxwindowfilm.com/banners/static/poster.webp", "moduleParts": { "assets/index-1d342667.js": "cd96-63" }, "imported": [], "importedBy": [{ "uid": "cd96-66" }] }, "cd96-64": { "id": "D:/www/auto-show/src/view/index/index.vue?vue&type=style&index=0&scoped=3426e76b&lang.less", "moduleParts": { "assets/index-1d342667.js": "cd96-65" }, "imported": [], "importedBy": [{ "uid": "cd96-66" }] }, "cd96-66": { "id": "D:/www/auto-show/src/view/index/index.vue", "moduleParts": { "assets/index-1d342667.js": "cd96-67" }, "imported": [{ "uid": "cd96-106" }, { "uid": "cd96-108" }, { "uid": "cd96-258" }, { "uid": "cd96-56" }, { "uid": "cd96-260" }, { "uid": "cd96-244" }, { "uid": "cd96-294" }, { "uid": "cd96-58" }, { "uid": "cd96-60" }, { "uid": "cd96-62" }, { "uid": "cd96-64" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-68": { "id": "D:/www/auto-show/src/assets/images/ditu.png", "moduleParts": { "assets/index-cbd0bde5.js": "cd96-69" }, "imported": [], "importedBy": [{ "uid": "cd96-78" }] }, "cd96-70": { "id": "D:/www/auto-show/src/assets/images/1.png", "moduleParts": { "assets/index-cbd0bde5.js": "cd96-71" }, "imported": [], "importedBy": [{ "uid": "cd96-78" }] }, "cd96-72": { "id": "D:/www/auto-show/src/assets/images/2.png", "moduleParts": { "assets/index-cbd0bde5.js": "cd96-73" }, "imported": [], "importedBy": [{ "uid": "cd96-78" }] }, "cd96-74": { "id": "D:/www/auto-show/src/assets/images/3.png", "moduleParts": { "assets/index-cbd0bde5.js": "cd96-75" }, "imported": [], "importedBy": [{ "uid": "cd96-78" }] }, "cd96-76": { "id": "D:/www/auto-show/src/view/concatus/index.vue?vue&type=style&index=0&scoped=fa326ba1&lang.less", "moduleParts": { "assets/index-cbd0bde5.js": "cd96-77" }, "imported": [], "importedBy": [{ "uid": "cd96-78" }] }, "cd96-78": { "id": "D:/www/auto-show/src/view/concatus/index.vue", "moduleParts": { "assets/index-cbd0bde5.js": "cd96-79" }, "imported": [{ "uid": "cd96-106" }, { "uid": "cd96-108" }, { "uid": "cd96-6" }, { "uid": "cd96-260" }, { "uid": "cd96-244" }, { "uid": "cd96-294" }, { "uid": "cd96-68" }, { "uid": "cd96-70" }, { "uid": "cd96-72" }, { "uid": "cd96-74" }, { "uid": "cd96-76" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-80": { "id": "https://www.kdxwindowfilm.com/banners/static/0ef781787f9087ccf05ea12329aa6b1943576e7b208c2f-i7cyFT.png", "moduleParts": { "assets/index-a305fa10.js": "cd96-81" }, "imported": [], "importedBy": [{ "uid": "cd96-84" }] }, "cd96-82": { "id": "D:/www/auto-show/src/view/construction/index.vue?vue&type=style&index=0&scoped=896d1964&lang.less", "moduleParts": { "assets/index-a305fa10.js": "cd96-83" }, "imported": [], "importedBy": [{ "uid": "cd96-84" }] }, "cd96-84": { "id": "D:/www/auto-show/src/view/construction/index.vue", "moduleParts": { "assets/index-a305fa10.js": "cd96-85" }, "imported": [{ "uid": "cd96-258" }, { "uid": "cd96-256" }, { "uid": "cd96-294" }, { "uid": "cd96-80" }, { "uid": "cd96-82" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-86": { "id": "D:/www/auto-show/src/view/components/select/index.vue?vue&type=style&index=0&scoped=488e0e27&lang.less", "moduleParts": { "assets/index-3799e9c4.js": "cd96-87" }, "imported": [], "importedBy": [{ "uid": "cd96-88" }] }, "cd96-88": { "id": "D:/www/auto-show/src/view/components/select/index.vue", "moduleParts": { "assets/index-3799e9c4.js": "cd96-89" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-86" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-94" }] }, "cd96-90": { "id": "https://www.kdxwindowfilm.com/banners/static/关闭.png", "moduleParts": { "assets/index-3799e9c4.js": "cd96-91" }, "imported": [], "importedBy": [{ "uid": "cd96-94" }] }, "cd96-92": { "id": "D:/www/auto-show/src/view/store/index.vue?vue&type=style&index=0&scoped=18403c82&lang.less", "moduleParts": { "assets/index-3799e9c4.js": "cd96-93" }, "imported": [], "importedBy": [{ "uid": "cd96-94" }] }, "cd96-94": { "id": "D:/www/auto-show/src/view/store/index.vue", "moduleParts": { "assets/index-3799e9c4.js": "cd96-95" }, "imported": [{ "uid": "cd96-258" }, { "uid": "cd96-88" }, { "uid": "cd96-294" }, { "uid": "cd96-90" }, { "uid": "cd96-92" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-250" }] }, "cd96-96": { "id": "D:/www/auto-show/node_modules/swiper/shared/ssr-window.esm.mjs", "moduleParts": { "assets/swiper-bundle-e76e1664.js": "cd96-97" }, "imported": [], "importedBy": [{ "uid": "cd96-100" }, { "uid": "cd96-98" }] }, "cd96-98": { "id": "D:/www/auto-show/node_modules/swiper/shared/utils.mjs", "moduleParts": { "assets/swiper-bundle-e76e1664.js": "cd96-99" }, "imported": [{ "uid": "cd96-96" }], "importedBy": [{ "uid": "cd96-100" }, { "uid": "cd96-102" }] }, "cd96-100": { "id": "D:/www/auto-show/node_modules/swiper/shared/swiper-core.mjs", "moduleParts": { "assets/swiper-bundle-e76e1664.js": "cd96-101" }, "imported": [{ "uid": "cd96-96" }, { "uid": "cd96-98" }], "importedBy": [{ "uid": "cd96-106" }, { "uid": "cd96-104" }] }, "cd96-102": { "id": "D:/www/auto-show/node_modules/swiper/shared/update-swiper.mjs", "moduleParts": { "assets/swiper-bundle-e76e1664.js": "cd96-103" }, "imported": [{ "uid": "cd96-98" }], "importedBy": [{ "uid": "cd96-106" }, { "uid": "cd96-104" }] }, "cd96-104": { "id": "D:/www/auto-show/node_modules/swiper/shared/update-on-virtual-data.mjs", "moduleParts": { "assets/swiper-bundle-e76e1664.js": "cd96-105" }, "imported": [{ "uid": "cd96-102" }, { "uid": "cd96-100" }], "importedBy": [{ "uid": "cd96-106" }] }, "cd96-106": { "id": "D:/www/auto-show/node_modules/swiper/swiper-vue.mjs", "moduleParts": { "assets/swiper-bundle-e76e1664.js": "cd96-107" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-100" }, { "uid": "cd96-104" }, { "uid": "cd96-102" }], "importedBy": [{ "uid": "cd96-66" }, { "uid": "cd96-78" }, { "uid": "cd96-24" }] }, "cd96-108": { "id": "D:/www/auto-show/node_modules/swiper/swiper-bundle.css", "moduleParts": { "assets/swiper-bundle-e76e1664.js": "cd96-109" }, "imported": [], "importedBy": [{ "uid": "cd96-66" }, { "uid": "cd96-78" }, { "uid": "cd96-24" }] }, "cd96-110": { "id": "\u0000vite/modulepreload-polyfill", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-111" }, "imported": [], "importedBy": [{ "uid": "cd96-292" }] }, "cd96-112": { "id": "D:/www/auto-show/node_modules/@vue/shared/dist/shared.esm-bundler.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-113" }, "imported": [], "importedBy": [{ "uid": "cd96-118" }, { "uid": "cd96-116" }, { "uid": "cd96-114" }] }, "cd96-114": { "id": "D:/www/auto-show/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-115" }, "imported": [{ "uid": "cd96-112" }], "importedBy": [{ "uid": "cd96-116" }] }, "cd96-116": { "id": "D:/www/auto-show/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-117" }, "imported": [{ "uid": "cd96-114" }, { "uid": "cd96-112" }], "importedBy": [{ "uid": "cd96-118" }] }, "cd96-118": { "id": "D:/www/auto-show/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-119" }, "imported": [{ "uid": "cd96-116" }, { "uid": "cd96-112" }], "importedBy": [{ "uid": "cd96-294" }] }, "cd96-120": { "id": "D:/www/auto-show/src/assets/images/banner/qichemo.jpg", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-121" }, "imported": [], "importedBy": [{ "uid": "cd96-140" }] }, "cd96-122": { "id": "D:/www/auto-show/src/assets/images/banner/qimian.jpg", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-123" }, "imported": [], "importedBy": [{ "uid": "cd96-140" }] }, "cd96-124": { "id": "D:/www/auto-show/src/assets/images/banner/jiaju.jpg", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-125" }, "imported": [], "importedBy": [{ "uid": "cd96-140" }] }, "cd96-126": { "id": "D:/www/auto-show/src/assets/images/banner/about.jpg", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-127" }, "imported": [], "importedBy": [{ "uid": "cd96-140" }] }, "cd96-128": { "id": "D:/www/auto-show/src/assets/images/banner/news.jpg", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-129" }, "imported": [], "importedBy": [{ "uid": "cd96-140" }] }, "cd96-130": { "id": "D:/www/auto-show/src/assets/images/banner/store.jpg", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-131" }, "imported": [], "importedBy": [{ "uid": "cd96-140" }] }, "cd96-132": { "id": "https://www.kdxwindowfilm.com/banners/static/logo.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-133" }, "imported": [], "importedBy": [{ "uid": "cd96-140" }] }, "cd96-134": { "id": "D:/www/auto-show/node_modules/vue-router/dist/vue-router.mjs", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-135" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-295" }], "importedBy": [{ "uid": "cd96-14" }, { "uid": "cd96-250" }, { "uid": "cd96-140" }] }, "cd96-136": { "id": "D:/www/auto-show/components/headers.vue?vue&type=style&index=0&scoped=879b031a&lang.less", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-137" }, "imported": [], "importedBy": [{ "uid": "cd96-140" }] }, "cd96-138": { "id": "\u0000plugin-vue:export-helper", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-139" }, "imported": [], "importedBy": [{ "uid": "cd96-2" }, { "uid": "cd96-10" }, { "uid": "cd96-14" }, { "uid": "cd96-66" }, { "uid": "cd96-36" }, { "uid": "cd96-94" }, { "uid": "cd96-28" }, { "uid": "cd96-52" }, { "uid": "cd96-78" }, { "uid": "cd96-84" }, { "uid": "cd96-24" }, { "uid": "cd96-254" }, { "uid": "cd96-56" }, { "uid": "cd96-6" }, { "uid": "cd96-88" }, { "uid": "cd96-272" }, { "uid": "cd96-140" }, { "uid": "cd96-156" }, { "uid": "cd96-276" }] }, "cd96-140": { "id": "D:/www/auto-show/components/headers.vue", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-141" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-120" }, { "uid": "cd96-122" }, { "uid": "cd96-124" }, { "uid": "cd96-126" }, { "uid": "cd96-128" }, { "uid": "cd96-130" }, { "uid": "cd96-132" }, { "uid": "cd96-134" }, { "uid": "cd96-136" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-272" }] }, "cd96-142": { "id": "https://www.kdxwindowfilm.com/banners/static/dibu.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-143" }, "imported": [], "importedBy": [{ "uid": "cd96-156" }] }, "cd96-144": { "id": "https://www.kdxwindowfilm.com/banners/static/wlogo.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-145" }, "imported": [], "importedBy": [{ "uid": "cd96-156" }] }, "cd96-146": { "id": "https://www.kdxwindowfilm.com/banners/static/tmall.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-147" }, "imported": [], "importedBy": [{ "uid": "cd96-272" }, { "uid": "cd96-156" }] }, "cd96-148": { "id": "https://www.kdxwindowfilm.com/banners/static/jd.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-149" }, "imported": [], "importedBy": [{ "uid": "cd96-272" }, { "uid": "cd96-156" }] }, "cd96-150": { "id": "https://www.kdxwindowfilm.com/banners/static/pdd.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-151" }, "imported": [], "importedBy": [{ "uid": "cd96-156" }] }, "cd96-152": { "id": "https://www.kdxwindowfilm.com/banners/static/erwei3.jpg", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-153" }, "imported": [], "importedBy": [{ "uid": "cd96-156" }] }, "cd96-154": { "id": "D:/www/auto-show/components/bottoms.vue?vue&type=style&index=0&scoped=590a1b47&lang.less", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-155" }, "imported": [], "importedBy": [{ "uid": "cd96-156" }] }, "cd96-156": { "id": "D:/www/auto-show/components/bottoms.vue", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-157" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-142" }, { "uid": "cd96-144" }, { "uid": "cd96-146" }, { "uid": "cd96-148" }, { "uid": "cd96-150" }, { "uid": "cd96-152" }, { "uid": "cd96-154" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-272" }] }, "cd96-158": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/bind.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-159" }, "imported": [], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-160" }] }, "cd96-160": { "id": "D:/www/auto-show/node_modules/axios/lib/utils.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-161" }, "imported": [{ "uid": "cd96-158" }], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-228" }, { "uid": "cd96-222" }, { "uid": "cd96-188" }, { "uid": "cd96-186" }, { "uid": "cd96-198" }, { "uid": "cd96-166" }, { "uid": "cd96-162" }, { "uid": "cd96-234" }, { "uid": "cd96-192" }, { "uid": "cd96-170" }, { "uid": "cd96-172" }, { "uid": "cd96-184" }, { "uid": "cd96-190" }, { "uid": "cd96-194" }, { "uid": "cd96-218" }, { "uid": "cd96-216" }, { "uid": "cd96-202" }, { "uid": "cd96-210" }] }, "cd96-162": { "id": "D:/www/auto-show/node_modules/axios/lib/core/AxiosError.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-163" }, "imported": [{ "uid": "cd96-160" }], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-188" }, { "uid": "cd96-198" }, { "uid": "cd96-166" }, { "uid": "cd96-226" }, { "uid": "cd96-218" }, { "uid": "cd96-216" }, { "uid": "cd96-200" }] }, "cd96-164": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/null.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-165" }, "imported": [], "importedBy": [{ "uid": "cd96-166" }, { "uid": "cd96-218" }] }, "cd96-166": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/toFormData.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-167" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-162" }, { "uid": "cd96-164" }], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-188" }, { "uid": "cd96-184" }, { "uid": "cd96-168" }] }, "cd96-168": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-169" }, "imported": [{ "uid": "cd96-166" }], "importedBy": [{ "uid": "cd96-170" }, { "uid": "cd96-176" }] }, "cd96-170": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/buildURL.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-171" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-168" }], "importedBy": [{ "uid": "cd96-228" }, { "uid": "cd96-216" }] }, "cd96-172": { "id": "D:/www/auto-show/node_modules/axios/lib/core/InterceptorManager.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-173" }, "imported": [{ "uid": "cd96-160" }], "importedBy": [{ "uid": "cd96-228" }] }, "cd96-174": { "id": "D:/www/auto-show/node_modules/axios/lib/defaults/transitional.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-175" }, "imported": [], "importedBy": [{ "uid": "cd96-188" }, { "uid": "cd96-216" }] }, "cd96-176": { "id": "D:/www/auto-show/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-177" }, "imported": [{ "uid": "cd96-168" }], "importedBy": [{ "uid": "cd96-182" }] }, "cd96-178": { "id": "D:/www/auto-show/node_modules/axios/lib/platform/browser/classes/FormData.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-179" }, "imported": [], "importedBy": [{ "uid": "cd96-182" }] }, "cd96-180": { "id": "D:/www/auto-show/node_modules/axios/lib/platform/browser/classes/Blob.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-181" }, "imported": [], "importedBy": [{ "uid": "cd96-182" }] }, "cd96-182": { "id": "D:/www/auto-show/node_modules/axios/lib/platform/browser/index.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-183" }, "imported": [{ "uid": "cd96-176" }, { "uid": "cd96-178" }, { "uid": "cd96-180" }], "importedBy": [{ "uid": "cd96-309" }] }, "cd96-184": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/toURLEncodedForm.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-185" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-166" }, { "uid": "cd96-309" }], "importedBy": [{ "uid": "cd96-188" }] }, "cd96-186": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/formDataToJSON.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-187" }, "imported": [{ "uid": "cd96-160" }], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-188" }] }, "cd96-188": { "id": "D:/www/auto-show/node_modules/axios/lib/defaults/index.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-189" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-162" }, { "uid": "cd96-174" }, { "uid": "cd96-166" }, { "uid": "cd96-184" }, { "uid": "cd96-309" }, { "uid": "cd96-186" }], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-220" }, { "uid": "cd96-194" }] }, "cd96-190": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/parseHeaders.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-191" }, "imported": [{ "uid": "cd96-160" }], "importedBy": [{ "uid": "cd96-192" }] }, "cd96-192": { "id": "D:/www/auto-show/node_modules/axios/lib/core/AxiosHeaders.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-193" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-190" }], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-228" }, { "uid": "cd96-222" }, { "uid": "cd96-220" }, { "uid": "cd96-194" }, { "uid": "cd96-216" }] }, "cd96-194": { "id": "D:/www/auto-show/node_modules/axios/lib/core/transformData.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-195" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-188" }, { "uid": "cd96-192" }], "importedBy": [{ "uid": "cd96-220" }] }, "cd96-196": { "id": "D:/www/auto-show/node_modules/axios/lib/cancel/isCancel.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-197" }, "imported": [], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-220" }] }, "cd96-198": { "id": "D:/www/auto-show/node_modules/axios/lib/cancel/CanceledError.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-199" }, "imported": [{ "uid": "cd96-162" }, { "uid": "cd96-160" }], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-230" }, { "uid": "cd96-220" }, { "uid": "cd96-216" }] }, "cd96-200": { "id": "D:/www/auto-show/node_modules/axios/lib/core/settle.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-201" }, "imported": [{ "uid": "cd96-162" }], "importedBy": [{ "uid": "cd96-216" }] }, "cd96-202": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/cookies.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-203" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-309" }], "importedBy": [{ "uid": "cd96-216" }] }, "cd96-204": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/isAbsoluteURL.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-205" }, "imported": [], "importedBy": [{ "uid": "cd96-208" }] }, "cd96-206": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/combineURLs.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-207" }, "imported": [], "importedBy": [{ "uid": "cd96-208" }] }, "cd96-208": { "id": "D:/www/auto-show/node_modules/axios/lib/core/buildFullPath.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-209" }, "imported": [{ "uid": "cd96-204" }, { "uid": "cd96-206" }], "importedBy": [{ "uid": "cd96-228" }, { "uid": "cd96-216" }] }, "cd96-210": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/isURLSameOrigin.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-211" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-309" }], "importedBy": [{ "uid": "cd96-216" }] }, "cd96-212": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/parseProtocol.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-213" }, "imported": [], "importedBy": [{ "uid": "cd96-216" }] }, "cd96-214": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/speedometer.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-215" }, "imported": [], "importedBy": [{ "uid": "cd96-216" }] }, "cd96-216": { "id": "D:/www/auto-show/node_modules/axios/lib/adapters/xhr.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-217" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-200" }, { "uid": "cd96-202" }, { "uid": "cd96-170" }, { "uid": "cd96-208" }, { "uid": "cd96-210" }, { "uid": "cd96-174" }, { "uid": "cd96-162" }, { "uid": "cd96-198" }, { "uid": "cd96-212" }, { "uid": "cd96-309" }, { "uid": "cd96-192" }, { "uid": "cd96-214" }], "importedBy": [{ "uid": "cd96-218" }] }, "cd96-218": { "id": "D:/www/auto-show/node_modules/axios/lib/adapters/adapters.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-219" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-164" }, { "uid": "cd96-216" }, { "uid": "cd96-162" }], "importedBy": [{ "uid": "cd96-220" }] }, "cd96-220": { "id": "D:/www/auto-show/node_modules/axios/lib/core/dispatchRequest.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-221" }, "imported": [{ "uid": "cd96-194" }, { "uid": "cd96-196" }, { "uid": "cd96-188" }, { "uid": "cd96-198" }, { "uid": "cd96-192" }, { "uid": "cd96-218" }], "importedBy": [{ "uid": "cd96-228" }] }, "cd96-222": { "id": "D:/www/auto-show/node_modules/axios/lib/core/mergeConfig.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-223" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-192" }], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-228" }] }, "cd96-224": { "id": "D:/www/auto-show/node_modules/axios/lib/env/data.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-225" }, "imported": [], "importedBy": [{ "uid": "cd96-238" }, { "uid": "cd96-226" }] }, "cd96-226": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/validator.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-227" }, "imported": [{ "uid": "cd96-224" }, { "uid": "cd96-162" }], "importedBy": [{ "uid": "cd96-228" }] }, "cd96-228": { "id": "D:/www/auto-show/node_modules/axios/lib/core/Axios.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-229" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-170" }, { "uid": "cd96-172" }, { "uid": "cd96-220" }, { "uid": "cd96-222" }, { "uid": "cd96-208" }, { "uid": "cd96-226" }, { "uid": "cd96-192" }], "importedBy": [{ "uid": "cd96-238" }] }, "cd96-230": { "id": "D:/www/auto-show/node_modules/axios/lib/cancel/CancelToken.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-231" }, "imported": [{ "uid": "cd96-198" }], "importedBy": [{ "uid": "cd96-238" }] }, "cd96-232": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/spread.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-233" }, "imported": [], "importedBy": [{ "uid": "cd96-238" }] }, "cd96-234": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/isAxiosError.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-235" }, "imported": [{ "uid": "cd96-160" }], "importedBy": [{ "uid": "cd96-238" }] }, "cd96-236": { "id": "D:/www/auto-show/node_modules/axios/lib/helpers/HttpStatusCode.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-237" }, "imported": [], "importedBy": [{ "uid": "cd96-238" }] }, "cd96-238": { "id": "D:/www/auto-show/node_modules/axios/lib/axios.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-239" }, "imported": [{ "uid": "cd96-160" }, { "uid": "cd96-158" }, { "uid": "cd96-228" }, { "uid": "cd96-222" }, { "uid": "cd96-188" }, { "uid": "cd96-186" }, { "uid": "cd96-198" }, { "uid": "cd96-230" }, { "uid": "cd96-196" }, { "uid": "cd96-224" }, { "uid": "cd96-166" }, { "uid": "cd96-162" }, { "uid": "cd96-232" }, { "uid": "cd96-234" }, { "uid": "cd96-192" }, { "uid": "cd96-236" }], "importedBy": [{ "uid": "cd96-308" }] }, "cd96-240": { "id": "\u0000vite/preload-helper", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-241" }, "imported": [], "importedBy": [{ "uid": "cd96-250" }, { "uid": "cd96-280" }] }, "cd96-242": { "id": "D:/www/auto-show/node_modules/vue-demi/lib/index.mjs", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-243" }, "imported": [{ "uid": "cd96-294" }], "importedBy": [{ "uid": "cd96-244" }] }, "cd96-244": { "id": "D:/www/auto-show/node_modules/pinia/dist/pinia.mjs", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-245" }, "imported": [{ "uid": "cd96-242" }, { "uid": "cd96-295" }], "importedBy": [{ "uid": "cd96-248" }, { "uid": "cd96-246" }, { "uid": "cd96-66" }, { "uid": "cd96-78" }, { "uid": "cd96-24" }, { "uid": "cd96-260" }] }, "cd96-246": { "id": "D:/www/auto-show/src/store/index.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-247" }, "imported": [{ "uid": "cd96-244" }], "importedBy": [{ "uid": "cd96-250" }, { "uid": "cd96-290" }] }, "cd96-248": { "id": "D:/www/auto-show/src/store/path.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-249" }, "imported": [{ "uid": "cd96-244" }, { "uid": "cd96-294" }], "importedBy": [{ "uid": "cd96-2" }, { "uid": "cd96-250" }] }, "cd96-250": { "id": "D:/www/auto-show/src/route/index.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-251" }, "imported": [{ "uid": "cd96-240" }, { "uid": "cd96-134" }, { "uid": "cd96-246" }, { "uid": "cd96-248" }, { "uid": "cd96-66", "dynamic": true }, { "uid": "cd96-36", "dynamic": true }, { "uid": "cd96-94", "dynamic": true }, { "uid": "cd96-28", "dynamic": true }, { "uid": "cd96-2", "dynamic": true }, { "uid": "cd96-52", "dynamic": true }, { "uid": "cd96-78", "dynamic": true }, { "uid": "cd96-84", "dynamic": true }, { "uid": "cd96-14", "dynamic": true }, { "uid": "cd96-24", "dynamic": true }], "importedBy": [{ "uid": "cd96-258" }, { "uid": "cd96-290" }] }, "cd96-252": { "id": "D:/www/auto-show/src/plugins/vToast/vToast.vue?vue&type=style&index=0&scoped=6bda87a7&lang.less", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-253" }, "imported": [], "importedBy": [{ "uid": "cd96-254" }] }, "cd96-254": { "id": "D:/www/auto-show/src/plugins/vToast/vToast.vue", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-255" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-252" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-256" }] }, "cd96-256": { "id": "D:/www/auto-show/src/plugins/vToast/index.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-257" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-254" }], "importedBy": [{ "uid": "cd96-258" }, { "uid": "cd96-84" }, { "uid": "cd96-290" }] }, "cd96-258": { "id": "D:/www/auto-show/src/utils/request.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-259" }, "imported": [{ "uid": "cd96-308" }, { "uid": "cd96-250" }, { "uid": "cd96-256" }], "importedBy": [{ "uid": "cd96-14" }, { "uid": "cd96-66" }, { "uid": "cd96-36" }, { "uid": "cd96-94" }, { "uid": "cd96-28" }, { "uid": "cd96-52" }, { "uid": "cd96-84" }, { "uid": "cd96-56" }, { "uid": "cd96-260" }, { "uid": "cd96-272" }] }, "cd96-260": { "id": "D:/www/auto-show/src/store/config.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-261" }, "imported": [{ "uid": "cd96-244" }, { "uid": "cd96-258" }], "importedBy": [{ "uid": "cd96-66" }, { "uid": "cd96-78" }, { "uid": "cd96-24" }, { "uid": "cd96-272" }] }, "cd96-262": { "id": "https://www.kdxwindowfilm.com/banners/static/index1.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-263" }, "imported": [], "importedBy": [{ "uid": "cd96-272" }] }, "cd96-264": { "id": "https://www.kdxwindowfilm.com/banners/static/index2.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-265" }, "imported": [], "importedBy": [{ "uid": "cd96-272" }] }, "cd96-266": { "id": "https://www.kdxwindowfilm.com/banners/static/index3.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-267" }, "imported": [], "importedBy": [{ "uid": "cd96-272" }] }, "cd96-268": { "id": "https://www.kdxwindowfilm.com/banners/static/dy.png", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-269" }, "imported": [], "importedBy": [{ "uid": "cd96-272" }] }, "cd96-270": { "id": "D:/www/auto-show/src/App.vue?vue&type=style&index=0&lang.less", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-271" }, "imported": [], "importedBy": [{ "uid": "cd96-272" }] }, "cd96-272": { "id": "D:/www/auto-show/src/App.vue", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-273" }, "imported": [{ "uid": "cd96-140" }, { "uid": "cd96-156" }, { "uid": "cd96-258" }, { "uid": "cd96-260" }, { "uid": "cd96-294" }, { "uid": "cd96-262" }, { "uid": "cd96-264" }, { "uid": "cd96-266" }, { "uid": "cd96-146" }, { "uid": "cd96-148" }, { "uid": "cd96-268" }, { "uid": "cd96-270" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-290" }] }, "cd96-274": { "id": "D:/www/auto-show/src/plugins/vConfirm/vConfirm.vue?vue&type=style&index=0&scoped=decd801b&lang.css", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-275" }, "imported": [], "importedBy": [{ "uid": "cd96-276" }] }, "cd96-276": { "id": "D:/www/auto-show/src/plugins/vConfirm/vConfirm.vue", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-277" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-274" }, { "uid": "cd96-138" }], "importedBy": [{ "uid": "cd96-278" }] }, "cd96-278": { "id": "D:/www/auto-show/src/plugins/vConfirm/index.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-279" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-276" }], "importedBy": [{ "uid": "cd96-290" }] }, "cd96-280": { "id": "D:/www/auto-show/src/plugins/vPopup/index.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-281" }, "imported": [{ "uid": "cd96-240" }, { "uid": "cd96-294" }, { "uid": "cd96-10", "dynamic": true }], "importedBy": [{ "uid": "cd96-290" }] }, "cd96-282": { "id": "D:/www/auto-show/src/assets/css/style.less", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-283" }, "imported": [], "importedBy": [{ "uid": "cd96-290" }] }, "cd96-284": { "id": "D:/www/auto-show/src/assets/css/iconfont/icon.css", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-285" }, "imported": [], "importedBy": [{ "uid": "cd96-290" }] }, "cd96-286": { "id": "D:/www/auto-show/node_modules/animate.css/animate.css", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-287" }, "imported": [], "importedBy": [{ "uid": "cd96-288" }] }, "cd96-288": { "id": "D:/www/auto-show/animateOnScroll.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-289" }, "imported": [{ "uid": "cd96-286" }], "importedBy": [{ "uid": "cd96-290" }] }, "cd96-290": { "id": "D:/www/auto-show/src/main.js", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-291" }, "imported": [{ "uid": "cd96-294" }, { "uid": "cd96-272" }, { "uid": "cd96-250" }, { "uid": "cd96-246" }, { "uid": "cd96-278" }, { "uid": "cd96-256" }, { "uid": "cd96-280" }, { "uid": "cd96-282" }, { "uid": "cd96-284" }, { "uid": "cd96-288" }], "importedBy": [{ "uid": "cd96-292" }] }, "cd96-292": { "id": "D:/www/auto-show/index.html", "moduleParts": { "assets/index-db6a5f4b.js": "cd96-293" }, "imported": [{ "uid": "cd96-110" }, { "uid": "cd96-310" }, { "uid": "cd96-290" }], "importedBy": [], "isEntry": true }, "cd96-294": { "id": "D:/www/auto-show/node_modules/vue/dist/vue.runtime.esm-bundler.js", "moduleParts": {}, "imported": [{ "uid": "cd96-118" }], "importedBy": [{ "uid": "cd96-2" }, { "uid": "cd96-248" }, { "uid": "cd96-242" }, { "uid": "cd96-10" }, { "uid": "cd96-14" }, { "uid": "cd96-134" }, { "uid": "cd96-256" }, { "uid": "cd96-66" }, { "uid": "cd96-36" }, { "uid": "cd96-94" }, { "uid": "cd96-28" }, { "uid": "cd96-52" }, { "uid": "cd96-78" }, { "uid": "cd96-84" }, { "uid": "cd96-24" }, { "uid": "cd96-254" }, { "uid": "cd96-106" }, { "uid": "cd96-56" }, { "uid": "cd96-6" }, { "uid": "cd96-88" }, { "uid": "cd96-290" }, { "uid": "cd96-272" }, { "uid": "cd96-278" }, { "uid": "cd96-280" }, { "uid": "cd96-140" }, { "uid": "cd96-156" }, { "uid": "cd96-276" }] }, "cd96-295": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/index.js", "moduleParts": {}, "imported": [{ "uid": "cd96-296" }, { "uid": "cd96-297" }, { "uid": "cd96-298" }, { "uid": "cd96-299" }, { "uid": "cd96-300" }, { "uid": "cd96-301" }], "importedBy": [{ "uid": "cd96-244" }, { "uid": "cd96-134" }] }, "cd96-296": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/env.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-295" }] }, "cd96-297": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/const.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-295" }, { "uid": "cd96-298" }] }, "cd96-298": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/proxy.js", "moduleParts": {}, "imported": [{ "uid": "cd96-297" }, { "uid": "cd96-301" }], "importedBy": [{ "uid": "cd96-295" }] }, "cd96-299": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/api/index.js", "moduleParts": {}, "imported": [{ "uid": "cd96-302" }, { "uid": "cd96-303" }, { "uid": "cd96-304" }, { "uid": "cd96-305" }, { "uid": "cd96-306" }, { "uid": "cd96-307" }], "importedBy": [{ "uid": "cd96-295" }] }, "cd96-300": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/plugin.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-295" }] }, "cd96-301": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/time.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-295" }, { "uid": "cd96-298" }] }, "cd96-302": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/api/api.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-299" }] }, "cd96-303": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/api/app.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-299" }] }, "cd96-304": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/api/component.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-299" }] }, "cd96-305": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/api/context.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-299" }] }, "cd96-306": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/api/hooks.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-299" }] }, "cd96-307": { "id": "D:/www/auto-show/node_modules/@vue/devtools-api/lib/esm/api/util.js", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-299" }] }, "cd96-308": { "id": "D:/www/auto-show/node_modules/axios/index.js", "moduleParts": {}, "imported": [{ "uid": "cd96-238" }], "importedBy": [{ "uid": "cd96-258" }] }, "cd96-309": { "id": "D:/www/auto-show/node_modules/axios/lib/platform/index.js", "moduleParts": {}, "imported": [{ "uid": "cd96-182" }], "importedBy": [{ "uid": "cd96-188" }, { "uid": "cd96-184" }, { "uid": "cd96-216" }, { "uid": "cd96-202" }, { "uid": "cd96-210" }] }, "cd96-310": { "id": "D:/www/auto-show/index.html?html-proxy&inline-css&index=0.css", "moduleParts": {}, "imported": [], "importedBy": [{ "uid": "cd96-292" }] } }, "env": { "rollup": "3.18.0" }, "options": { "gzip": true, "brotli": true, "sourcemap": false } };

    const run = () => {
      const width = window.innerWidth;
      const height = window.innerHeight;

      const chartNode = document.querySelector("main");
      drawChart.default(chartNode, data, width, height);
    };

    window.addEventListener('resize', run);

    document.addEventListener('DOMContentLoaded', run);
    /*-->*/
  </script>
</body>

</html>